HCRM博客

SSH 连接时出现报错,该如何解决?

SSH 报错详解及解决方法

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

1. Connection refused(连接被拒绝)

SSH 连接时出现报错,该如何解决?-图1
(图片来源网络,侵权删除)

报错信息:

ssh: connect to host 123.123.123.111 port 22: Connection refused

可能原因:

SSH 服务未启动

防火墙未开放端口 22

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

解决方法:

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 连接时出现报错,该如何解决?-图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

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