目标
首先我们简单定义一下Windows电脑A作为ssh的控制端,Windows电脑B作为ssh的服务端,我们的目的是通过ssh 密钥验证无需密码登录来用A控制B。
前提条件
- A与B在同一局域网内,A可以ping通B;
- B最好是win11版本,安装好OpenSSH Server,并设置为自动开状态(详见博客windows中ssh配置_ssh windows-优快云博客);
- (!必要,否则还是选择密码登录)B的用户是管理员。
开干
首先打开A的powershell,运行命令:
ssh-keygen -b 4096
执行完会在你的C:\Users\你的用户名\.ssh目录下生成:
这两个文件,其中带.pub的是公钥,你可以认为是一把锁,需要上传给B,不带.pub的是私钥,是用来打开公钥这把锁的专用钥匙。
然后你需要将这个公钥的内容复制到!!B的C:\ProgramData\ssh目录下的administrators_authorized_keys文件中。下面是在B上的操作:
注意,这里会遇到管理员权限的问题,需要用管理员身份打开powershell,然后运行命令:
cd C:\\ProgramData\\ssh
notepad administrators_authorized_keys
这样就可以打开文件,然后将公钥内容复制进去了。
接着运行命令:
notepad sshd_config
将Password 的那句yes改为no,并取消注释,下一行也取消注释;
将key Authentication那句也取消注释;
然后保存。
最后在A上就可以通过
ssh -p 端口号(默认22) B的用户名:B的ip
从A无密码连接B啦。(第一次连接会有提示,输入yes即可)