window的ssh免密登录
## windows 开启ssh共享服务 [(46条消息) win10 开启ssh server服务 远程登录_Ch3n的博客-CSDN博客_ssh远程登录](https://blog.csdn.net/weixin_43064185/article/details/90080815)
```Restart-Service sshd```
Windows之间使用OpenSSH的ssh免密登录,排坑
安装
安装OpenSSH
需要安装OpenSSH客户端和服务器,win10自带客户端,我们安装服务器即可。
设置 -- 应用 -- 可选功能 -- 添加 -- 添加 OpenSSH 服务器
配置
公钥
- 在客户端上,命令行执行
ssh-keygen -t rsa
,这将生成两个文件id_rsa
和id_rsa.pub
。(注意:命令行不能使用中文的powershell,在使用powershell中文生成文件的时候默认使用utf-16
编码而不是utf-8
,这会导致公钥过长出现line 1 exceeds size limit
错误) - 在服务端上,以用户身份打开 powershell,依次执行以下命令:
cd $env: USERPROFILE # 进入用户目录 mkdir. ssh # 新建.ssh文件夹(如果没有的话) cd. ssh New-Item authorized_keys # 创建文件authorized_keys
- 将
id_rsa.pub
文件的内容从客户端粘贴到上一步中的.ssh\authorized_keys
文件中; - 权限设置,将
.ssh\authorized_keys
文件右键属性 -- 安全 -- 高级 -- 点击“禁用继承”--当出现提示时,选择“将继承的权限转换为此对象的显式权限”。然后将权限条目删除至只剩“SYSTEM”、自己的账户、“Administrators”。(此步我默认就是这三个用户,所以只用修改禁用继承) - 重启服务:
net stop sshd
net start sshd
修改配置
- 打开sshd配置文件
C:\ProgramData\ssh\sshd.config
,注意ProgramData
是隐藏文件夹; - 编辑配置文件:
确保以下3条没有被注释
PubkeyAuthentication yes # 使用公钥
AuthorizedKeysFile .ssh/authorized_keys # 公钥位置
PasswordAuthentication no # 免密登录
确保以下2条有注释掉
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
- 重启服务:
net stop sshd
net start sshd
测试
回到客户端 ssh your_userName@your_IP_Adress,此时无需密码直接登录说明正常(首次登陆可能会提示是否加入known_hosts,yes即可)。
Tips
sshd debug
在ssh服务器中若想查看执行细节,可以:
- 关闭sshd服务
net stop sshd
; - 使用
sshd -d
开启sshd服务;
这样可以查看debug细节。
如果在执行ssh命令时想查看执行细节,可以使用参数 -vvv
,三个v表示查看debug级别为3的细节,如:
ssh -vvv localhost
参考链接
- Stackflow问答
- 知乎文章
- [Windows之间使用OpenSSH的ssh免密登录,排坑 - Robinbin - 博客园](https://www.cnblogs.com/robinbin/p/16162608.html)