行业资讯

立即注册 咨询客服

当前位置:首页 > 行业资讯> 如何在Windows的Linux子系统上配置SSH服务器

如何在Windows的Linux子系统上配置SSH服务器

发布时间:2018年03月27日 22:22:55    来源: A5互联

安装openssh

首先需要安装openssh-server和openssh-client。

然后修改sshd-config配置

这里需要关注的就是这三行。

1UsePrivilegeSeparation no         #因为wsl没有实现chroot

2PasswordAuthentication yes

3ListenAddress 0.0.0.0                 #这一项在我的发行版里缺省为注释行。

其他的可以根据需求修改。

1ListenAddress 0.0.0.0                  # 要让其他计算机能连接上需要加上这一行,或者把经常需要连接的计算机IP加入

2PermitRootLogin yes                   # 允许root用户登录。

关闭Windows自带的ssh

我原本还不知道的,查了资料才知道新版Windows自带了ssh服务,不过怎么使用还没有了解。

可以使用powershell来查看这个服务。

1PS C:\Users\user> Get-Service -Name ssh*

2Status   Name               DisplayName

3------   ----               -----------

4Stopped  SshBroker          SSH Server Broker

5Stopped  SshProxy           SSH Server Proxy

在服务控制台里找到这两个服务停掉就行了。

注意要先停掉sshproxy才可以关掉sshbroker。

以调试方式启动ssh

1/usr/sbin/sshd -d

-d表明是以调试方式启动的服务,这种情况下,错误会显示在控制台上。

要注意即使以这种方法启动ssh server,它仍然只是在存在bash窗口时的一个子服务。一旦最后一个bash窗口关闭,这个ssh server也就关闭了,显然这不是我们想要的。接下来看看怎么将ssh server以windows服务或者后台进程来运行。

正常开启ssh

1service ssh start

自动启动ssh服务

当前WSL并不支持ssh server作为服务运行。我们需要借助windows计划任务和脚本,使得在windows启动时自动运行这一服务。

1set ws=wscript.createobject("wscript.shell")

2ws.run "C:\Windows\System32\bash.exe -c '/usr/sbin/sshd -D'",0

将这个文件存为vbs,并在计划任务中添加一个启动任务,触发器设置为系统启动时。

不过使用这个方法的前提是你的WSL默认用户是root,对于默认用户不是root的必须使用sudo方式启动。

执行sudo时,会提示输入密码,而这时又无法拿到用户的输入。要解决这一问题,需要允许sudo在没有密码的情况下执行命令。

在bash里输入命令:

1sudo visudo

1#includedir /etc/sudoers.d

2username ALL=(ALL) NOPASSWD: /usr/sbin/sshd -D

把username改成你自己的用户名即可。