ssh 连接被拒绝

ssh 连接被拒绝

嗨,我的 ssh 出了问题,它莫名其妙地停止工作了,我不知道为什么。它给出的消息是:

ssh: connect to host <host> port 22: Connection refused

我写的时候没有看到任何错误信息dmesg,但是我收到了以下信息telnet localhost 22

Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

我尝试了在类似情况下看到的解决方案[1][2]但它仍然没有解决我的问题输入和输出如下:

>> sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT
>> sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  

请注意,这已经是 ACCEPT 了,在输入命令之前我没有遇到任何问题sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT。我还尝试重新启动 ssh,但没有任何变化

>>netstat -a | egrep 'Proto|LISTEN'
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 localhost:20128         *:*                     LISTEN     
tcp        0      0 localhost:17600         *:*                     LISTEN     
tcp        0      0 localhost:20129         *:*                     LISTEN     
tcp        0      0 localhost:17603         *:*                     LISTEN     
tcp        0      0 localhost:21128         *:*                     LISTEN     
tcp        0      0 deathstar:domain        *:*                     LISTEN     
tcp        0      0 localhost:ipp           *:*                     LISTEN     
tcp        0      0 *:db-lsp                *:*                     LISTEN     
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN     
tcp6       0      0 [::]:db-lsp             [::]:*                  LISTEN 

我不知道还能尝试什么,所以希望这足以解决问题。

其余内容是在@Ashu 的评论后添加的

sudo lsof -i | grep ssh

什么都没发生

>>netstat -l --numeric-ports | grep 22
unix  2      [ ACC ]     STREAM     LISTENING     1618183  @jack-com.canonical.Unity.Master.Scope.files.T1731348652205882

>>sudo iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

根据@TheSchwa 的评论进行编辑

>>ps aux | grep sshd
jack      3711  0.0  0.0  15944  2220 pts/26   S+   14:08   0:00 grep --color=auto sshd

答案1

我首先尝试删除并重新安装 ssh,但是它不起作用,然后我尝试清除它:

sudo apt-get purge openssh-server
sudo apt-get install openssh-server

现在它正在工作。

答案2

TCP 错误“连接被拒绝”意味着此 IP 地址上有一个活动主机,但是您尝试连接的端口(ssh 为 22)未打开。

首先仔细检查您的主机名和/或 IP 地址。

最可能的原因是有人停止了 ssh 守护程序,或者有人将其配置为使用其他端口而不是默认的 22。

如果你有物理访问服务器的权限,请登录该服务器并输入命令sudo netstat -tupan。理想情况下,你应该看到如下一行:

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1053/sshd

如果没有,请尝试启动 sshd 和/或检查它是否配置为监听端口 22。

编辑

需要重点关注的是:

:22- 端口 22

LISTEN- 有一个进程正在运行,并且正在等待端口 22 上的传入连接

sshd- 流程的名称。

如果你看不到这样的行,那么你的 ssh 服务器可能配置不正确,无法启动。尝试这一页有关如何在前台运行并进行故障排除的说明。

答案3

SSH 连接被拒绝,原因如下-

  1. 默认端口 (22) 已更改为其他端口。请检查 /etc/ssh/sshd_config 文件以查看端口是否有任何更改。

  2. LAN 上的 IP 冲突。使用 arping 命令确定是否存在冲突。查看您的 dhcp 池。

  3. ip-tables/firewall 上不允许使用 ssh 端口。请检查您的 iptables/firewall 并允许。

*卸载/重新安装 ssh 包不是一个好主意,因为它会改变许多密钥和密码。

答案4

导致此问题的最常见问题之一是 sshd 服务本身。您是否检查过它是否正在运行?另外,我注意到您正在直接编辑 iptables,因此如果您正在运行 ufw/firewalld — 不妨检查一下。

还要确保 ssh 服务器运行正确的 IP,并且 FQDN 路由到正确的 IP 地址。

相关内容