windows10(build 1809)以及windows 2019后已经集成了OpenSSH,不过默认安装启用的只有ssh-client,只能作客户端通过ssh登录其他电脑。若要开启ssh-server服务,则需以下设置。
安装sshd
点击
设置->系统->可选功能->添加可选功能
,勾选
OpenSSH服务器
,等待windows下载安装完毕。
如上图这个
可选功能
不同windows版本位置可能不同,windows10应该在
设置->应用->应用和功能->管理可选功能
下;也可直接按windows键在搜索框中搜索
可选功能
来打开。
开启sshd服务
以管理员身份打开命令行,运行如下命令启动ssh后台进程
net start sshd
运行如下命令配置sshd开机自启动
sc config sshd start=auto
停止sshd服务命令为
net stop sshd
随后在另一台电脑B上即可使用
ssh username@host
来登录此台电脑A,其中username是A上的用户名,host为A的网络IP。
配置ssh默认使用的shell
前面使用ssh命令连接电脑A,可以发现默认打开的终端是windows的
cmd
,参考微软官方文档,这个默认终端可通过如下命令进行配置
New-ItemProperty-Path "HKLM:\SOFTWARE\OpenSSH"-Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"-PropertyType String -Force
如上命令需要在电脑A上以管理员权限运行。
其中
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
可以替换为想使用的其他终端的路径,比如powershell7,一般是
C:/Program Files/PowerShell/7/pwsh.exe
如若仅临时想使用其他终端,可使用如下命令
ssh username@host pwsh
这其实利用了
ssh
的特性,会将
username@host
后面的内容当作需要在远程服务器上运行的指令,所以前提需要
pwsh
在远程电脑A上的
path环境变量
中
配置ssh启用密钥登录
在运行ssh命令连接至远程电脑A时,目前为止都需要输入密码进行验证。也可以在远程电脑A上配置以启用密钥登录。
参考微软文档,对于一般有管理员权限的用户,需要在文件夹
C:\ProgramData\ssh\
下新建文件
administrators_authorized_keys
,可用记事本打开此文件,拷贝ssh客户端B的ssh公钥至文件中,保存并退出。
接着以管理员权限打开命令行,运行如下命令
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
随后在此命令行中重启sshd服务
net stop sshd
net start sshd
如上即配置完成
版权归原作者 echoluck 所有, 如有侵权,请联系我们删除。