ssh 连接被拒绝

jac*_*raz 8 server ssh firewall networking

嗨,我的 ssh 有问题,它神奇地停止工作,我不知道为什么。它给出的信息是:

ssh: connect to host <host> port 22: Connection refused
Run Code Online (Sandbox Code Playgroud)

我在写作时没有看到任何错误消息,dmesg但我正在关注telnet localhost 22

Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
Run Code Online (Sandbox Code Playgroud)

我尝试了在一些类似情况下看到的解决方案[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  
Run Code Online (Sandbox Code Playgroud)

请注意,这已经接受了,即使在输入命令之前我也没有任何问题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 
Run Code Online (Sandbox Code Playgroud)

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

在@Ashu 的评论后添加了休息

sudo lsof -i | grep ssh
Run Code Online (Sandbox Code Playgroud)

什么都没有发生

>>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 
Run Code Online (Sandbox Code Playgroud)

在@TheSchwa 的评论后编辑

>>ps aux | grep sshd
jack      3711  0.0  0.0  15944  2220 pts/26   S+   14:08   0:00 grep --color=auto sshd
Run Code Online (Sandbox Code Playgroud)

jac*_*raz 23

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

sudo apt-get purge openssh-server
sudo apt-get install openssh-server
Run Code Online (Sandbox Code Playgroud)

所以现在它的工作。


sмu*_*urf 6

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 服务器可能配置不当并且无法启动。尝试此页面以获取有关如何在前台运行它并对其进行故障排除的说明。