和 Linux 一样,Windows 10 (我为 Win 10 1909)上也可以使用 ssh 客户端和服务器。对 Windows 进行 ssh 的效果就是 cmd,当然你也可以在里面输入 powershell 或 wsl 使用其他的命令行。
这就是这篇文章归类于 Linux 的原因吗
Windows 安装 ssh 客户端
其实可以直接使用 wsl 的 ssh 客户端的。
但是既然 Windows 提供了这个功能,那就还是提一笔。
在 Windows 设置(按 Windows徽标键+I) 直接搜索 添加可选功能 并进入。 添加功能,找到 OpenSSH 客户端 并安装。
安装好以后就可以使用 ssh ssh-keygen ssh-agent ssh-add scp 等功能了。
Windows 安装并配置 ssh 服务器
同样是在上面的 添加可选功能 找到 OpenSSH 服务器 并安装。
以管理员权限的 Powershell 执行 net start sshd 即可。
本地测试:在 cmd 执行 ssh 微软账户@127.0.0.1(我的是 ssh lxl361429916@live.com@127.0.0.1,虽然两个 @ 确实有点蠢),密码是微软账户的密码。
被问及是否要信任的时候选 yes。
如果需要外网链接该服务器,需要有一个公网 ip 或进行内网穿透,可参考 利用内网穿透进行远程桌面访问。这里就不多说了。
Windows 设置 ssh 公钥
这个地方倒挺麻烦,如果直接使用 Linux 向 Linux 加入公钥的方式 ssh-copy-id,在 Windows 服务器上是行不通的,会显示没有 cat 等命令。
直接把客户端的公钥复制到服务器的 %USERPROFILE%\.ssh\authorized_keys 也不能使用。因为权限不对。
参考链接:Setting up OpenSSH for Windows using public key authentication - Stack Overflow
- 首先通过 scp 或其他方式(随便瞎搞,鼠标复制粘贴都行),把客户端的公钥复制到服务器的
%USERPROFILE%\.ssh\authorized_keys。 - 用文件资源管理器打开
%USERPROFILE%\.ssh\。 - 右键单击
authorized_keys,打开属性 - 安全 -高级。 - 点击
禁用继承,并选择将已继承的权限转换为此对象的显式权限。 - 最重要的一步,是删除除了
SYSTEM和当前账户以外的所有账户的权限(也就是说,最后只能剩这两个账户,Administrators什么的都得删)。回答中专门提到,某些使用Repair-AuthorizedKeyPermission $env:USERPROFILE\.ssh\authorized_keys的方法会导致增加sshd的权限,最后导致失败,所有不建议这么做。 - 如果 Windows 版本在
1809及以后,还要打开C:\ProgramData\ssh\sshd_config并注释掉以下两行:
1 |
最后以管理员权限重启 sshd:
1 | net stop sshd |
即可。
配置文件目录
%USERPROFILE%/.ssh/对应~/.ssh/%PROGRAMDATA%/ssh/对应/etc/ssh/