重装Cygwin OpenSSH后SSH密钥异常,无法建立连接求助
解决Cygwin OpenSSH重装后SSH连接失败的问题
我之前也碰到过类似的情况——重装Cygwin的OpenSSH后,不管是跨机器还是本地SSH登录都直接断开,连密码提示都没有。结合你提到的ssh -vvv显示用了过时密钥的信息,问题大概率出在重装后密钥认证的配置/权限错误,或者服务端没有正确重置。下面是一步步的解决步骤:
1. 修复Cygwin SSH相关文件的权限
Cygwin对SSH文件的权限要求特别严格,重装后很容易出现权限混乱,导致服务端直接拒绝密钥请求:
- 打开Cygwin终端,依次执行以下命令修复个人目录下的SSH文件权限:
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_rsa chmod 644 ~/.ssh/id_rsa.pub chmod 644 ~/.ssh/authorized_keys - 还要确保系统目录
/var/empty的权限正确(这是sshd运行的必要目录):sudo chmod 755 /var/empty sudo chown root:root /var/empty
2. 重置Cygwin SSH服务配置
重装OpenSSH后,原有的sshd配置文件和主机密钥可能被覆盖或损坏,需要重新初始化服务:
- 先停止当前的SSH服务:
net stop sshd - 运行配置向导自动生成新的主机密钥和配置:
过程中如果提示是否创建ssh-host-config -ysshd用户、是否设置服务自动启动,直接按默认选yes就行。 - 重启SSH服务:
net start sshd
3. 清理客户端的旧密钥缓存
不管是服务器B还是A本地,之前缓存的旧主机密钥现在已经失效了,必须清理:
- 在服务器B的Linux终端,清理对应服务器A的旧密钥记录:
ssh-keygen -R <服务器A的IP或主机名> - 在服务器A的Cygwin终端,清理本地的旧缓存:
ssh-keygen -R localhost ssh-keygen -R <服务器A的本机IP>
4. 重新配置密钥认证(可选,若前几步无效)
如果还是无法通过密钥登录,可能是原密钥已经损坏,重新生成并交换:
- 在服务器A的Cygwin终端生成新的RSA密钥(一路回车默认,不要设置密码):
ssh-keygen -t rsa -b 4096 - 将新的公钥添加到本地授权列表:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys - 把新的公钥复制到服务器B的
~/.ssh/authorized_keys文件中(可以手动复制内容,或者用scp临时传过去)。
5. 临时开启密码登录排查(可选)
如果还是没有进入密码提示环节,可能是sshd配置禁用了密码登录,先临时开启排查:
- 编辑sshd配置文件:
nano /etc/sshd_config - 找到
PasswordAuthentication选项,修改为:PasswordAuthentication yes - 重启SSH服务:
这时候再尝试连接,如果能看到密码提示,说明问题确实在密钥认证上,解决后可以再改回net stop sshd && net start sshdno保持无密码登录的配置。
内容的提问来源于stack exchange,提问作者bobo
相关产品推荐
相关产品推荐

