HCRM博客

SSH连接报错解决方案探析,SSH连接常见报错原因分析与高效解决指南

SSH 报错详解及解决方法

一、SSH 连接常见报错及其解决方法

1. Connection refused(连接被拒绝)

SSH连接报错解决方案探析,SSH连接常见报错原因分析与高效解决指南-图1
(图片来源网络,侵权删除)

报错信息:

  • ssh: connect to host 123.123.123.111 port 22: Connection refused

可能原因:

SSH 服务未启动

防火墙未开放端口 22

网络问题,如网线未连接或网卡故障

解决方法:

SSH连接报错解决方案探析,SSH连接常见报错原因分析与高效解决指南-图2
(图片来源网络,侵权删除)

(1)启动 SSH 服务:

  • sudo systemctl start sshd
  • 或者在某些系统上
  • sudo service sshd start

(2)检查 SSH 服务状态:

  • sudo systemctl status sshd
  • 或者
  • sudo service sshd status

(3)查看端口是否开放:

  • sudo netstat tnlp | grep :22

如果未开放,则重新启动 SSH 服务。

(4)测试网络连通性:

  • ping www.baidu.com

如果无法访问外网,检查 DNS 设置和网络连接。

SSH连接报错解决方案探析,SSH连接常见报错原因分析与高效解决指南-图3
(图片来源网络,侵权删除)

(5)开放防火墙端口:

直接打开端口:

  • sudo iptables I INPUT p tcp dport 22 j ACCEPT

永久打开端口(CentOS 7):

  • sudo firewallcmd permanent addservice=ssh
  • sudo firewallcmd reload

永久打开端口(CentOS 6):

  • sudo vim /etc/sysconfig/iptables
  • 添加以下行并保存
  • A RHFirewall1INPUT m state state NEW m tcp p tcp dport 22 j ACCEPT
  • sudo service iptables restart

2. Host key verification failed(主机密钥验证失败)

报错信息:

  • @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  • @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
  • @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  • IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
  • Someone could be eavesdropping on you right now (maninthemiddle attack)!
  • It is also possible that the RSA host key has just been changed.
  • ...
  • Host key verification failed.

可能原因:

远程服务器的公钥已经更改

~/.ssh/known_hosts 文件中记录的旧密钥与当前不匹配

客户端与服务器之间的中间人攻击风险

解决方法:

(1)修改配置文件:

~/.ssh/config/etc/ssh/ssh_config 中添加以下配置:

  • StrictHostKeyChecking no
  • UserKnownHostsFile /dev/null

这种方法适用于内网环境且安全性要求不高的情况。

(2)删除已知主机密钥:

编辑~/.ssh/known_hosts 文件,删除对应服务器的条目:

  • sed i '/123.123.123.111/d' ~/.ssh/known_hosts

或者直接删除整个文件:

  • rm ~/.ssh/known_hosts

再次尝试连接,系统会重新提示是否接受新的主机密钥。

3. Permission denied, please try again(权限被拒绝)

报错信息:

  • Permission denied, please try again.
  • password authentication failed or bad ownership or modes for directory /root/.ssh

可能原因:

密码错误

用户权限问题,例如用户目录或.ssh 目录权限不正确

SSH 配置禁止 root 用户登录

解决方法:

(1)检查密码是否正确:确保输入的密码正确。

(2)修改目录权限:确保用户主目录和.ssh 目录权限正确:

  • sudo chown R user:user /home/user/.ssh
  • sudo chmod 700 /home/user/.ssh
  • sudo chmod 600 /home/user/.ssh/authorized_keys

如果使用的是 root 用户,将/home/user 替换为/root

(3)修改 SSH 配置文件:允许 root 用户登录,编辑/etc/ssh/sshd_config

  • PermitRootLogin yes

然后重启 SSH 服务:

  • sudo systemctl restart sshd

注意:允许 root 用户登录可能会带来安全隐患,建议根据实际情况进行配置。

4. SSH 公私钥正确的情况下免密登录失败

报错信息:即使公私钥配置正确,每次登录仍然提示输入密码。

可能原因:公私钥权限不正确,或者服务器上的authorized_keys 配置有误。

解决方法:

(1)检查公私钥权限:确保私钥文件权限为 600:

  • chmod 600 /path/to/private_key

确保公钥文件权限为 644:

  • chmod 644 /path/to/public_key

(2)检查 authorized_keys 文件:确保服务器上的~/.ssh/authorized_keys 文件中正确配置了公钥,并且没有多余的空格或错误。

(3)重启 SSH 服务:在修改完配置后,重启 SSH 服务使配置生效:

  • sudo systemctl restart sshd

二、相关问答FAQs

Q1: SSH 连接时报“Permission denied (publickey)”怎么办?

A1: 这个错误通常是由于公钥认证失败引起的,可以按照以下步骤排查解决:

1、确保私钥文件已正确添加到sshagent,使用sshadd /path/to/private_key 添加私钥。

2、确保服务器上的~/.ssh/authorized_keys 文件中包含正确的公钥内容,可以使用sshcopyid user@hostname 重新复制公钥。

3、确保本地和服务器上的.ssh 目录权限设置正确,目录权限应为 700,文件权限应为 600。

4、检查服务器的 SSH 配置文件/etc/ssh/sshd_config,确认PubkeyAuthentication 设置为yes

5、如果问题依旧存在,可以尝试重启 SSH 服务:sudo systemctl restart sshd

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/gz/11979.html

分享:
扫描分享到社交APP
上一篇
下一篇