嗨,我的 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 连接被拒绝,原因如下-
默认端口 (22) 已更改为其他端口。请检查 /etc/ssh/sshd_config 文件以查看端口是否有任何更改。
LAN 上的 IP 冲突。使用 arping 命令确定是否存在冲突。查看您的 dhcp 池。
ip-tables/firewall 上不允许使用 ssh 端口。请检查您的 iptables/firewall 并允许。
*卸载/重新安装 ssh 包不是一个好主意,因为它会改变许多密钥和密码。
答案4
导致此问题的最常见问题之一是 sshd 服务本身。您是否检查过它是否正在运行?另外,我注意到您正在直接编辑 iptables,因此如果您正在运行 ufw/firewalld — 不妨检查一下。
还要确保 ssh 服务器运行正确的 IP,并且 FQDN 路由到正确的 IP 地址。