嗨,我的 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
请注意,这已经接受了,即使在输入命令之前我也没有任何问题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
我首先尝试删除并重新安装 ssh,但它对我不起作用,然后我尝试清除它:
所以现在它的工作。
TCP 错误“连接被拒绝”表示此 IP 地址上存在活动主机,但您尝试连接的端口(ssh 为 22)未打开。
首先仔细检查您的主机名和/或 IP 地址。
最可能的原因是有人停止了 ssh 守护程序,或者有人将其配置为使用替代端口而不是默认的 22。
如果您对服务器有物理访问权限,请登录该服务器并输入 command
sudo netstat -tupan
。理想情况下,您应该看到如下一行:tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1053/sshd
如果您不尝试启动 sshd 和/或检查它是否配置为侦听端口 22。
编辑
需要关注的位是:
:22
- 端口 22LISTEN
- 有一个进程正在运行并期待端口 22 上的传入连接sshd
- 进程的名称。如果您看不到这样的行,那么您的 ssh 服务器可能配置错误并且无法启动。尝试此页面以获取有关如何在前台运行它并对其进行故障排除的说明。
由于以下原因,SSH 连接被拒绝 -
默认端口(22)已更改为其他内容。检查您的 /etc/ssh/sshd_config 文件是否有任何端口更改。
LAN 上的 IP 冲突。使用 arping 命令确定任何冲突。查看您的 dhcp 池。
ip-tables/firewall 上不允许使用 ssh 端口。检查您的 iptables/防火墙并允许。
*卸载/重新安装 ssh 包不是一个好主意,因为它会更改许多密钥并通过。
您的服务器防火墙配置为打开端口,但没有任何东西在监听以响应您的连接。
您需要安装 sshd(ssh 守护进程)并运行...
https://help.ubuntu.com/community/SSH/OpenSSH/Configuring
导致此问题的最常见问题之一是 sshd 服务本身。你检查它是否真的在运行?另外,我注意到你正在直接编辑你的 iptables,所以如果你有 ufw/firewalld 运行——不妨检查一下。
还要确保 ssh 服务器正在运行正确的 IP,并且 FQDN 正在路由到正确的 IP 地址。
您必须像这样创建缺少的目录
然后启动有故障的 shh 服务器:
就是这样!
我有这个是因为我没有
sudo ufw allow ssh
我只有sudo ufw allow 22
这还不够以上没有工作
下面的工作
另一个可能的问题:客户端网络的路由器阻止了 SSH 连接。我的电脑自动连接到我们的客人 Wi-Fi,切换回常规 Wi-Fi 解决了这个问题。如果您使用的是公共 Wi-Fi,这也可能是一个问题。
在某些情况下,我注意到需要手动重新启动 ssh 进程
sudo apt install openssh
sudo service ssh start