故障排查:SSH连接失效的四大常见原因

作为DevOps或者IT专业人士,人们往往困扰于为何无法通过SSH接入服务器。这种情况时有发生,且相当令人头痛。

在今天的文章中,我们将尝试汇总各类常见SSH故障原因,从而帮助大家更为顺畅地加以解决。

1.我们的SSH公钥未被注入至服务器

以密码形式实现的SSH非常危险。目前,绝大多数服务器都仅接受以密钥文件为载体的SSH。以下为具体流程:

我们生成一个SSH密钥对(也可以更进一步,以密码保护私钥)。

将SSH公钥发送至服务器管理者处。

管理员将我们的SSH公钥进行注入(通常为~/.ssh/authorized_keys)。

之后即可使用SSH。

好了,下面正式来看各类最常见的SSH故障!

 
 
 
 
  1. denny@laptop:/# ssh root@www.dennyzhang.com
  2. Permission denied (publickey).

以上故障信息可能存在两种原因:

(1). 私钥不具备登录权限。 公钥未被正确注入或者公钥已经丢失。

注意:如果暂时联系不到运维/DevOps人员,可先考虑团队中还有谁能够进行SSH接入。事实上,任何可以SSH接入的人员都可执行此类变更。

(2). 本地SSH公钥与私钥未正确配对。

在连接之前,SSH会检查我们的公钥与私钥是否正确进行了配对。如果没有,其会以静默方式拒绝使用私钥。没错,静默方式。

这种错误很可能源自某些指生成的自动化脚本。另外,如果我们只使用一条未匹配公钥的有效私钥,并不会引发错误。

2.防火墙阻止我们进行连接

出于安全考量,人们可能会执行一项较为严格的防火墙策略,这意味着只有特定IP能够建立SSH连接。

 
 
 
 
  1. denny@laptop:/# ssh root@www.dennyzhang.com
  2. ssh: connect to host www.dennyzhang.com port 22: Connection refused
  3. # Confirm with telnet. Usually it shall connect in seconds
  4. denny@laptop:/# telnet www.dennyzhang.com
  5. Trying 104.237.149.124...

遇到上述情况,大家可能希望马上寻求帮助——先别急。

人们可能重新配置SSHD以监听其它端口。您是否确定其为端口22?另外,也应当再次检查服务器IP与DNS名称。

在确认之后,与DevOps取得联系。这就引发了此类故障的第二种可能原因:SHHD并未上线运行。虽然很少见,但这一问题确实可能出现。这时DevOps与运维人员需要立即采取行动。

3. 主机密钥检查失败

当初次看到以下警报时,大家可能感到困惑。简单来说,其能够帮助我们避免中间人攻击。

 
 
 
 
  1. denny@laptop:/# ssh root@www.dennyzhang.com
  2. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  3. @       WARNING: POSSIBLE DNS SPOOFING DETECTED!          @
  4. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  5. The ECDSA host key for [www.dennyzhang.com]:22 has changed,
  6. and the key for the corresponding IP address [45.33.87.74]:22
  7. is unknown. This could either mean that
  8. DNS SPOOFING is happening or the IP address for the host
  9. and its host key have changed at the same time.
  10. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  11. @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
  12. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  13. IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
  14. Someone could be eavesdropping on you right now (man-in-the-middle attack)!
  15. It is also possible that a host key has just been changed.
  16. The fingerprint for the ECDSA key sent by the remote host is
  17. 37:df:b3:af:54:a3:57:05:aa:32:65:fc:a8:e7:f9:3a.
  18. Please contact your system administrator.
  19. Add correct host key in /root/.ssh/known_hosts to get rid of this message.
  20. Offending ECDSA key in /root/.ssh/known_hosts:2
  21.   remove with: ssh-keygen -f "/root/.ssh/known_hosts" -R [www.dennyzhang.com]:22
  22. ECDSA host key for [www.dennyzhang.com]:22 has changed and you have requested strict checking.
  23. Host key verification failed.

每台服务器都拥有一条指纹。如果该服务器被重新配置或者单纯被更换为另一台不同服务器,则指纹亦将有所变化。在成功登录之后,我们的笔记本会本地保存服务器指纹。在下一次登录时,其将首先进行比较。如果指纹不匹配,我们就会收到以上警报。

如果我们砍服务器最近进行过重新配置,则可忽略该警报。从~/.ssh/known_hosts中移除此入口,或者直接清空该文件。大家甚至可以关闭一切SSH主机密钥检查(当然,不建议采取这种方法)。

4. SSH密钥文件模式存在问题

SSH密钥文件具备自我保护属性,这意味着其无法被随意打开。该文件模式为0600或者0400。

 
 
 
 
  1. denny@laptop:/# ssh -i id_rsa root@www.dennyzhang.com
  2. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  3. @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
  4. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  5. Permissions 0644 for 'id_rsa' are too open.
  6. It is required that your private key files are NOT accessible by others.
  7. This private key will be ignored.
  8. bad permissions: ignore key: id_rsa
  9. Permission denied (publickey).

大家可以使用-v输出详尽信息:ssh -v $user@$server_ip。

网页名称:故障排查:SSH连接失效的四大常见原因
文章地址:http://www.shufengxianlan.com/qtweb/news18/453118.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联