最近升级 Ubuntu 12.04 后,ssh 无法正常工作。机器是 Linode 上的虚拟机。
我收到此错误:
$ ssh root@IP-ADDRESS
ssh: connect to host IP-ADDRESS port 22: Connection refused
我尝试过 NMAP,但它没有显示端口 22。目前,我可以通过 Linode Lish 访问虚拟机,因此我现在可以运行服务器...但需要尽快修复 ssh。
请问有什么帮助或建议吗?
答案1
错误“连接被拒绝”意味着主机已启动,但没有程序监听该端口。操作系统知道这一点,并向尝试连接的人发送相应的错误条件。
您的 ssh 服务器似乎由于某种原因未启动。您需要:- 使用命令在前台启动它sshd -d -D
,您可能会看到控制台上打印的错误。- 查看日志文件。
答案2
升级到 15.10 后,我遇到了同样的问题。仍然可以从计算机连接到自身,也可以从手机连接到计算机,但不能从 Windows 连接到计算机。查看了auth.log
使用系统日志查看器并发现消息
sshd[9553]: error: Hm, kex protocol error: type 30 seq 1 [preauth]
搜索该消息并发现这个帖子这说明这是 PuTTY 与最新 OpenSSH 之间的不兼容问题。要修复它:
在 PuTTY 中,转到“连接 → SSH → Kex”。在那里,选择“Diffie-Hellman 组交换”并将其移至列表底部,这样它就不会被使用。连接应该会再次正常工作。