linux远程重启windows
安装步骤:
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/expectexpect "hello"
send "world"
2 等待的字符串超时
默认情况下,等待的超时时间为10秒。 如果你不为expect命令输入任何东西,将在20秒内超时。 您也可以更改超时时间,如下所示。
#!/usr/bin/expectset timeout 10
expect "hello"
send "world"
3 使用Expect自动化用户进程
在Expect的帮助下,你可以自动化用户进程,并得到期望的输出。 例如,您可以使用Expect编写测试脚本来简化项目的测试用例。
下面的例子执行了额外的程序自动化。
#!/usr/bin/expectset timeout 20
spawn "/additionpl"
expect "Enter the number1 :" { send "12\r" }
expect "Enter the number2 :" { send "23\r" }
interact
执行上面的脚本,输出结果如下所示。
$ /user_procexpspawn /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/expectset timeout 20
spawn "/hellopl"
expect "hello"
send "no match : <$expect_out(buffer)> \n"
send "match : <$expect_out(0,string)>\n"
interact
hellopl程序只是打印两行,如下图所示。
#!/usr/bin/perlprint "Perl program\n";
print "hello world\n";
如下所示执行。
$ /matchexpspawn /hellopl
Perl program
hello world
no match : <Perl program
hello>
match : <hello>
5 自动化SU登录到其他用户帐户
Expect可以让你从程序中传递密码给Linux登录账号,而不是在终端输入密码。在下面的程序中,su自动登录到需要的账户上。
#!/usr/bin/expectset 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 guestspawn su guest
Password:
guest@localhost $
运行上面的脚本后,从bala用户帐户登录到guest用户帐户。
6 SSH登录到另一台计算机
下面给出的expect程序项目可自动从一台计算机ssh登录到另一台机器。
#!/usr/bin/expectset 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 passwordspawn 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这个服务重启一下!但前提是我去机房直接操作这个服务器!既然你无法远程也就只能亲自过去查看一下了!
0条评论