ssh 常见连接问题总结

ssh: connect to host **.**.**.** port 22: No route to host

服务器不存在,可能没开机或者不在同一个网络中。

ssh: connect to host **.**.**.** port 22: Connection refused

ssh 服务的端口可能改了,默认是 22,很多时候出于安全考虑会调整端口。此外也有可能是 ssh 服务没有开启。

密码正确,但不能连接

类似这种提示(关于 Permission denied 还有很多原因,看后面):
Permission denied, please try again.
多半是因为你使用了 root 身份登录,而服务器没有开启 root 用户登录 ssh 的权限。
解决办法:

# 修改 /etc/ssh/sshd_config
PermitRootLogin no 改为 PermitRootLogin yes

Host key verification failed.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

显而易见,证书不匹配,直接删掉 ~/.ssh/known_hosts 文件不失为一个快捷的解决办法。

Permissions 0755 for '/User/xxxx/.ssh/id_rsa' are too open.

遇到这种情况:

Macintosh:Permissions 0755 for '/User/xxxx/.ssh/id_rsa' are too open. 
Linux:Permissions 0755 for '/home/xxxx/.ssh/id_rsa' are too open.

这是说你的私钥权限太大, 所以需要只有你来操作

sudo chmod 600 ~/.ssh/id_rsa
sudo chmod 600 ~/.ssh/id_rsa.pub

Failed to add the host to the list of known hosts

遇到下面这种情况说明的 known_hosts 文件的权限有问题

Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts

执行这行命令

sudo chmod 644 ~/.ssh/known_hosts

最后你需要把你的 .ssh 文件夹的权限设置正确, 执行下面命令

sudo chmod 755 ~/.ssh

如何定位问题

上面两种情况默认也会返回 Permission denied 的提示。所以为了更好定位问题,在使用 ssh 时可以使用 -v 参数查看更多信息。这样会更容易定位问题。

你可能感兴趣的:(ssh 常见连接问题总结)