windows 如何配置 ssh
为本机生成 ssh
ssh-keygen -t ed25519 -C "your_email@example.com"
为 windows 开启 ssh 服务
# 1. 安装 OpenSSH 服务器
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# 2. 启动并设为开机自启
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
# 3. 防火墙放行 22 端口
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
为 windows 设置用户密码
你需要先为 windows 配置本地密码,才可以使用 ssh 密码登录
配置 ssh 密钥实现免密登录
在 unix like 的系统上,你如果想要配置某个服务器的用户配置免密登录,你只需要使用 ssh-copy-id 命令即可实现。
# 将当前电脑的 ssh 公钥添加到服务器的 user 用户的 ~/.ssh/authorized_keys 文件中
# 该命令在 windows 下无法使用
ssh-copy-id user@111.111.111.xxx
但这个方案你在 windows 上行不通,由于 windows 的奇妙权限问题,你使用 ssh-copy-id 是无效的,且你直接将公钥复制到用户的 ~/.ssh/authorized_keys 中也是无效的。
真正可行的做法,是将密钥文件复制到 C:\ProgramData\ssh\administrators_authorized_keys 文件中。
对的,windows 的 ssh 配置在 C:\ProgramData\ssh\ 下。
(可选): 将 ssh 连接的终端设置为 pwsh
# 将默认终端设置为 pwsh
# 这里需要注意,使用 用户目录的 pwsh 作为 ssh 终端会导致远程连接失败,所以需要使用 github 上的安装程序安装到系统目录
# MS Store 下安装的 pwsh 也不行,只能是 github 上使用 msi 安装的 pwsh
Set-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\PowerShell\7\pwsh.exe"
Restart-Service sshd