linux远程重启windows,第1张

安装步骤:

1、进入链接下载最新 OpenSSH-Win64zip(64位系统),解压至C:\Program Files\OpenSSH

2、打开cmd,cd进入C:\Program Files\OpenSSH(安装目录),执行命令:

powershellexe -ExecutionPolicy Bypass -File install-sshdps1

3、设置服务自动启动并启动服务:

sc config sshd start= auto

net start sshd

到此服务已经安装完毕,默认端口一样是22,默认用户名密码为Window账户名和密码,当然防火墙还是要设置对应端口允许通讯

修改设置:

通常linux下会修改ssh_config文件来修改ssh配置,但在安装目录并没有发现这个文件,查阅官方wiki后发现,原来是在C:\ProgramData\ssh目录下(此目录为隐藏目录)

端口号:Port 22

密钥访问:PubkeyAuthentication yes

密码访问:PasswordAuthentication no

空密码:PermitEmptyPasswords no

然后进入C:\Users\账户名\ssh目录,创建authorized_keys公钥文件(也可在ssh_config修改路径)(仅限77之前版本,79版本请看最后更新)

设置完成后重启sshd服务,接下来就可以使用Xshell等工具使用密钥连接了~

踩过的坑:

命令行不识别空格时:C:\Program Files\用C:\Progra~1\替代

Windows Service2012R2即使配置了ssh/authorized_keys公钥,连接时依然显示没有注册公钥。。。

查阅了官方wiki判断可能是权限问题:Fix SSH file permissions

进入C:\Program Files\OpenSSH(安装目录),右键 FixHostFilePermissionsps1使用PowerShell运行,命令行提示全选是,重启sshd服务后密钥连接正常

2019517更新:

新部署服务器的时候,发现公钥无法注册,发现新版本有变动:

 

 

参考官方wiki:administrators_authorized_keys

Administrators用户组的用户连接公钥,默认位置为

C:\ProgramData\ssh\administrators_authorized_keys

并且需要设置权限,在CMD中执行命令:

icacls administrators_authorized_keys /inheritance:r

icacls administrators_authorized_keys /grant SYSTEM:(F)

icacls administrators_authorized_keys /grant BUILTIN\Administrators:(F)

修改ssh_config文件:

AuthorizedKeysFile %programdata%/ssh/administrators_authorized_keys

重启sshd服务,即可使用密钥登陆SSH

3 安装expect 方法

https://blogcsdnnet/robertsong2004/article/details/38983259转自

 

 

6个Expect脚本示例

2014年09月01日 20:48:32 HaveFunInLinux 阅读数 7982

 

本文译至:http://wwwthegeekstuffcom/2010/10/expect-examples/

Expect 脚本语言用于自动提交输入到交互程序。它相比其它脚本语言简单易学。使用expect脚本的系统管理员和开发人员可以轻松地自动化冗余任务。它的工作原理是等待特定字符串,并发送或响应相应的字符串。

以下三个expect命令用于任何自动化互动的过程。

send – 发送字符串到进程

expect – 等待来自进程的特定的字符串

spawn – 启动命令 

请确保在您的系统上安装expect软件包,因为它不会被默认安装。 一旦安装后,你会看到expect解释器“/usr/bin/expect”。 一般来说,expect脚本文件具有exp的扩展。

1 Expect “Hello World”范例

下面的expect脚本等待具体字符串“hello”。 当它找到它时(在用户输入后),“world”字符串将作为应答发送。

#!/usr/bin/expect

expect "hello"

send "world"

2 等待的字符串超时

默认情况下,等待的超时时间为10秒。 如果你不为expect命令输入任何东西,将在20秒内超时。 您也可以更改超时时间,如下所示。

#!/usr/bin/expect

set timeout 10

expect "hello"

send "world"

3 使用Expect自动化用户进程

在Expect的帮助下,你可以自动化用户进程,并得到期望的输出。 例如,您可以使用Expect编写测试脚本来简化项目的测试用例。

下面的例子执行了额外的程序自动化。

#!/usr/bin/expect

set timeout 20

spawn "/additionpl"

expect "Enter the number1 :" { send "12\r" }

expect "Enter the number2 :" { send "23\r" }

interact

执行上面的脚本,输出结果如下所示。

$ /user_procexp

spawn /additionpl

Enter the number1 : 12

Enter the number2 : 23

Result : 35

如果你写的代码没有interact命令,在这种情况下,脚本会在发送字符串“23\r”后立即退出。 interact命令执行控制,处理addtion进程的作业,并生成预期的结果。

4 在$expect_out变量中的匹配和不匹配的内容

在字符串匹配成功时expect返回,但在此之前它将匹配的字符串存储在$expect_out(0,string)。之前所收到的字符串加上匹配的字符串存储在$expect_out(buffer)。下面的例子展示了这两个变量匹配的值。

#!/usr/bin/expect

set timeout 20

spawn "/hellopl"

expect "hello"

send "no match : <$expect_out(buffer)> \n"

send "match :  <$expect_out(0,string)>\n"

interact

hellopl程序只是打印两行,如下图所示。

#!/usr/bin/perl

print "Perl program\n";

print "hello world\n";

如下所示执行。

$ /matchexp

spawn /hellopl

Perl program

hello world

no match :  <Perl program

hello>

match :  <hello>

5 自动化SU登录到其他用户帐户 

Expect可以让你从程序中传递密码给Linux登录账号,而不是在终端输入密码。在下面的程序中,su自动登录到需要的账户上。 

#!/usr/bin/expect

set timeout 20

set user [lindex $argv 0]

set password [lindex $argv 1]

spawn su $user

expect "Password:"

send "$password\r";

interact

如下所示执行上面的expect程序。 

bala@localhost $ /suexp guest guest

spawn su guest

Password:

guest@localhost $

运行上面的脚本后,从bala用户帐户登录到guest用户帐户。 

6 SSH登录到另一台计算机

下面给出的expect程序项目可自动从一台计算机ssh登录到另一台机器。 

#!/usr/bin/expect

set timeout 20

set ip [lindex $argv 0]

set user [lindex $argv 1]

set password [lindex $argv 2]

spawn ssh "$user\@$ip"

expect "Password:"

send "$password\r";

interact

执行上面的expect程序如下所示。 

guest@host1 $ /sshexp 19216812 root password

spawn ssh root@19216812

Password:

Last login: Sat Oct  9 04:11:35 2010 from host1geetkstuffcom

root@host2 #

4 我这边的简单命令为

脚本为:#!/usr/bin/expectset timeout 20set ip [lindex $argv 0]set user [lindex $argv 1]set password [lindex $argv 2]

spawn ssh "$user\@$ip" "net start gscloud"expect "password:"send "$password\r";

interact

执行的命令为:

/deploy/startwin 1024196213 administrator Test1127!

作为Linux系统管理员,没有人不知道OpenSSH。SSH采用了密文的形式在网络中传输数据,实现了更高的安全级别,是Telnet服务的安全替代品,sshd是OpenSSH的服务端守护进程,而与之对应的Windows下客户端软件有很多,常用的有SecureCRT、putty等。通过SecureCRT远程连接Linux系统,不受网络速度和带宽的影响,无论是ADSL拨号上网还是56K的"猫"拨号上网,都能轻松连接,操作维护方便。SecureCRT的使用在前面章节已经有介绍,这里详细介绍OpenSSH服务端程序的配置。

OpenSSH在Red Hat Linux企业级版本中是默认安装的,一般的安装目录为/etc/ssh,对应的服务器配置文件为/etc/ssh/sshd_config。我们重点讲述这个配置文件中每个选项的含义。

2

1     [root@localhost ~]# vi /etc/ssh/sshd_config

2     Port 22

3     ("Port"用来设置sshd监听的端口,这里采用的是默认的端口号22)

4     #Protocol 2,1

5     (设置使用的ssh协议为ssh1或ssh2,如果仅仅使用ssh2,

设置为Protocol 2即可)

6     #ListenAddress 0000

7     ("ListenAddress"用来设置sshd服务器绑定的IP地址)

8     # HostKey for protocol version 1

9     #HostKey /etc/ssh/ssh_host_key

10 # HostKeys for protocol version 2

11 #HostKey /etc/ssh/ssh_host_rsa_key

12 #HostKey /etc/ssh/ssh_host_dsa_key

13 ("HostKey"用来设置服务器密匙文件的路径)

14 #KeyRegenerationInterval 1h

15 ("KeyRegenerationInterval"用来设置在多少秒之后

系统自动重新生成服务器的密匙(如果使用密匙)。重新生成

密匙是为了防止利用盗用的密匙解密被截获的信息)

16 #ServerKeyBits 768

17 ("ServerKeyBits"用来定义服务器密匙的长度)

18 SyslogFacility AUTHPRIV

19 ("SyslogFacility"用来设定在记录来自sshd的消息的时候,

是否给出"facility code")

20 #LogLevel INFO

21 ("LogLevel"用来记录sshd日志消息的级别)

22 #LoginGraceTime 2m

23 ("LoginGraceTime"用来设置如果用户登录失败,在切断

连接前服务器需要等待的时间,以秒为单位)

24 PermitRootLogin no

25 ("PermitRootLogin"用来设置超级用户root能不能用SSH登

录。root远程登录Linux是很危险的,因此在远程SSH登录Linux

系统时,这个选项建议设置为"no")

26 #StrictModes yes

27 ("StrictModes"用来设置SSH在接收登录请求之前是否检查

用户根目录和rhosts文件的权限和所有权。此选项建议设置为"yes")

28 #RSAAuthentication yes

29 ("RSAAuthentication"用来设置是否开启RAS密钥验证,

如果采用RAS密钥登录方式时,开启此选项)

30 #PubkeyAuthentication yes

31 ("PubkeyAuthentication"用来设置是否开启公钥验证,

如果采用公钥验证方式登录时,开启此选项)

32 #AuthorizedKeysFile     ssh/authorized_keys

33 ("AuthorizedKeysFile"用来设置公钥验证文件的路径,

与"PubkeyAuthentication"配合使用)

34 # similar for protocol version 2

35 #HostbasedAuthentication no

36 #IgnoreUserKnownHosts no

37 ("IgnoreUserKnownHosts"用来设置SSH在进行

RhostsRSAAuthentication安全验证时是否忽略用户

的"$HOME/ssh/known_hosts"文件)

38 #IgnoreRhosts yes

39 ("IgnoreRhosts"用来设置验证的时候是否使用

"~/rhosts"和"~/shosts"文件)

40 PasswordAuthentication yes

41 ("PasswordAuthentication"用来设置是否开启密

码验证机制,如果是用密码登录系统,应设置为"yes")

42 PermitEmptyPasswords no

43 ("PermitEmptyPasswords"用来设置是否允许用口令为

空的账号登录系统,肯定是"no"了)

44 X11Forwarding yes

45 ("X11Forwarding"用来设置是否允许X11转发)

46 #PrintMotd yes

47 ("PrintMotd"用来设置sshd是否在用户登录的时候显示"/etc/motd"中的信息)

上面括号中带下划线的内容为注释,是对sshd_config配置文件中每个选项含义的解释,这里仅仅列出最常用的一些选项,也是我们给出的推荐配置。

对sshd_config文件配置完毕,接着重启sshd守护进程,使修改生效:

/etc/initd/sshd restart

/etc/initd/sshd restart

注意 这里要切记的是,重启sshd服务,一定要到Linux系统本机去执行,如果在SSH远程连接环境下重启sshd服务,你就会被关在门外!

最后一步是设置sshd服务开机自动启动,只需执行如下命令即可:

chkconfig --level 35 sshd on

chkconfig --level 35 sshd on

这样sshd服务会在系统运行级3和5下自动启动

怎么用linux系统远程桌面连接?

尊敬的用户您好:

1、linux系统普遍使用SSH工具连接到服务器,一般用命令行。

2、linux桌面使用较少,远程桌面基本使用图形化工具+ssh工具才能打开,不划算。如果你想用,可以使用xmanager的xbroswer。已经使用过linux的,个人建议直接用SSH工具连接过去,抛弃图形化桌面。

3、SSH远程工具比较好用的是XSHELL。中国电信提供最优质的网络通讯服务,老友换新机,网龄抵现金,百兆宽带免费体验,超清电视iTV,电信活动可以直接通过营业厅查询。

在linux中如何开启telnet服务?

Linux默认没有开启telnet,首先更改/etc/xinetd。d/telnet文件,有的可能没有该文件,有比如krb5-telnet之类的,那就更改这个文件,如果实在一个跟telnet沾边的文件都没有;可能是没有安装telent服务,就需要拿盘再安装了,或者安装后还没有,就新建一个该文件,文件内容为:

#default:off

#description:Thekerberizedtelnetserveracceptsnormaltelnetsessions,

#butcanalsouseKerberos5authentication。

servicetelnet

{

flags=REUSE

socket_type=stream

wait=no

user=root

server=/usr/kerberos/sbin/telnetd

log_on_failure+=USERID

disable=yes

}

将其中的disable=yes的“yes”更改为“no”即可,

然后重启telnet服务

输入:servicexinetdrestart

Stoppingxinetd:

Startingxinetd:

重启成功,

这时候可以用telnet连接开通的linux主机了;但是linux默认不允许root用户远程telnet登录,两种方法解决该问题:

1,用非root‘用户登录,然后在切换到root用户,来源:www。

examda。com

2,将/etc/pam。d/login文件的第二行注释掉:#authrequiredpam_securetty。so;但是我这里没有测试通过。

linux如何远程使用?

linux操作系统通过命令行的方式就可以远程使用了。

Linux操作系统是完全可以通过命令行来操作的,目前常用的远程登录linux操作系统的方式是ssh。你在服务器端启用ssh服务,然后再远程使用支持ssh的软件,比如putty,指定服务器的地址和ssh的端口就可以登录了。Ssh端口默认是22,你也可以自己指定其他的端口。

windows系统怎么远程桌面linux连接?

尊敬的用户您好:

1、linux系统普遍使用SSH工具连接到服务器,一般用命令行。

2、linux桌面使用较少,远程桌面基本使用图形化工具+ssh工具才能打开,不划算。如果你想用,可以使用xmanager的xbroswer。已经使用过linux的,个人建议直接用SSH工具连接过去,抛弃图形化桌面。

3、SSH远程工具比较好用的是XSHELL。中国电信提供最优质的网络通讯服务,老友换新机,网龄抵现金,百兆宽带免费体验,超清电视iTV,电信活动可以直接通过营业厅查询。

linux怎么让别人远程?

linux操作系统要让别人远程登录,首先得启用远程登录的服务。一般远程登录的服务是telnet或者是ssh,在邻里操作系统上启用telnet服务器或者sshd,然后添加一个用户,让这个用户拥有远程登录的权限。这样其他人用这个用户就可以通过网络来登录你的linux操作系统了。

从客户端来看,SSH提供两种级别的安全验证。

对于第二种级别,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有用户的私人密匙)。但是整个登录的过程可能需要10秒。

将本地用户生成的公钥推送至远程服务器后,远程主机将用户的公钥,保存在登录后的用户主目录的$HOME/ssh/authorized_keys文件中。公钥就是一段字符串,只要把它追加在authorized_keys文件的末尾就行了。

这里不使用ssh-copy-id命令,改用下面的命令,来解释公钥的保存过程:

输入命令 ssh user@host ,然后根据提示输入远程服务器的登录密码

也可在配置文件/etc/ssh/ssh_config 中设置user和host(ip), 来简化命令, 配置如下:

配置后, 登录请求时只需输入如下命令:

使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。

公钥登录原理 :就是用户将自己的公钥储存在远程主机上。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥进行解密,如果解密验证成功,就证明用户是可信的,直接允许登录shell,不再要求密码。

执行上述命令首先会让你输入生成密钥的文件名: myPemKey (自定义),之后一路回车。

配置后,登录远程服务器时只需输入一下命令,便可直接登录成功:

修改后重启ssh服务

则远程连接时指定端口

(1) 通过iptables设置ssh端口的白名单,如下设置只允许19216810/24网段的客户机可以远程连接本机

(2) 通过/etc/hostsallow里面进行限制(如下),/etc/hostsdeny文件不要任何内容编辑,保持默认!

例如:

修改远程服务器ssh服务配置文件/etc/ssh/sshd_config

修改远程服务器配置文件/etc/ssh/sshd_config, 如下:

如果本机系统有些账号没有设置密码,而ssh配置文件里又没做限制,那么远程通过这个空密码账号就可以登陆了,这是及其不安全的,所以一定要禁止空密码登陆。

修改远程服务器配置文件/etc/ssh/sshd_config,如下:

参考:

参考:http://blogcsdnnet/jia0511/article/details/8237698

1 允许root用户远程登录

修改ssh服务配置文件

sudovi/etc/ssh/sshd_config

调整PermitRootLogin参数值为yes,如下图:

2 允许无密码登录

同上,修改ssh服务配置文件,两种情况:

1) 将PermitEmptyPasswords yes前面的#号去掉

2) 将PermitEmptyPasswords 参数值修改为yes,如下图:

无论哪种,最后PermitEmptyPasswords参数值为yes

以上两种配置,均需要重启ssh服务

service sshd restart  # 或者/etc/initdd/sshd restart

扩展:

为了安全起见,FreeBSD默认情况下是不允许root用户进行SSH远程登录的,需要进行以下操作才可以进行Root用户的ssh远程登录。

首先vi编辑/etc/inetdconf,去掉ssh前的#注释,保存后:wq退出 (开启监听ssh服务)

编辑/etc/rcconf, 最后加入:sshd_enable=”yes”即可

激活sshd服务:

#/etc/rcd/sshd start

检查服务是否启动,在22端口应该有监听。

# check port number22

#netstat -an #或

#netstat -tnlp

最后,编辑ssh配置文件

#vi/etc/ssh/sshd_config

在/etc/ssh/sshd_config最后中加入

PermitRootLogin yes #允许root登录

PermitEmptyPasswords no #不允许空密码登录

PasswordAuthentication yes # 设置是否使用口令验证。

修改完配置文件后,重新启动sshd服务器(/etc/rcd/sshd restart)即可。

补充:

1 如果重启后还是不行, 请重新载入sshd_config 文件

/etc/rcd/sshd reload

2 如果出现using keyboard-interactive authentication

password:

请确认配置文件中,PasswordAuthentication参数值是否已经改成yes

另外如果客户端是putty, 那么请确认”尝试’智能键盘’认证(SSH-2)”的勾是否有去掉!!!!

3 如果是使用root帐号登陆

请确认密码是否为空

空密码无法登陆

4 请确认是否有安装SSH

确认sysinstall>>>configure>>>networking>>>sshd是否的勾是否有打上

你的问题以前我也遇到过!最终我的解决方法是把防火墙先暂时关闭、看看主配置文件的端口号是不是被改过!再把sshd这个服务重启一下!但前提是我去机房直接操作这个服务器!既然你无法远程也就只能亲自过去查看一下了!

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » linux远程重启windows

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情