![Ubuntu 服务器不接受 SSH 连接](https://linux22.com/image/1061174/Ubuntu%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8D%E6%8E%A5%E5%8F%97%20SSH%20%E8%BF%9E%E6%8E%A5.png)
我正在尝试使用 PuTTY 从我的 Windows 机器通过 SSH 连接到远程 Ubuntu 服务器。但是,我不断收到超时错误,找不到任何原因。
尝试从控制台进行连接将提供以下详细输出:
$ ssh -vvv <user>@<ip-address>
OpenSSH_7.5p1, OpenSSL 1.0.2k 26 Jan 2017
debug1: Reading configuration data /etc/ssh/ssh_config
debug2: resolving "<ip-address>" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to <ip-address> [<ip-address>] port 22.
debug1: connect to address <ip-address> port 22: Connection timed out
ssh: connect to host <ip-address> port 22: Connection timed out
其中是我的用户名,是服务器的地址。
我运行了一下/sbin/ifconfig -a
,确认ip地址是正确的。
我可以使用我尝试 ssh 的用户名登录,这很好。
/etc/init.d/ssh status
在服务器上返回以下内容:
* ssh.service - OpenBSD Secure Shell Server
Loaded: loaded (/lib/systemd/system/ssh.server; enabled; vendor preset: enabled)
Active: active (running) since Wed 2017-09-06 BST; 21min ago
...
21 分钟前我重启了服务器,之前已经尝试重启 SSH 服务。连接仍然超时。
防火墙配置为接受端口 22 上的连接,因此我认为这里没有任何问题。
我在有权访问的控制台中实际能做的事情非常有限,但我不确定我还能检查或尝试什么。
编辑:
对 IP 进行 ping 操作后,我得到了以下信息:
$ ping <ip-address>
Pinging <ip-address> with 32 bytes of data:
Reply from <ip-address>: bytes=32 time=14ms TTL=54
Reply from <ip-address>: bytes=32 time=14ms TTL=54
Reply from <ip-address>: bytes=32 time=14ms TTL=54
Telnet 没有给出任何输出:
$ telnet <ip-address> 22
$
此外,现在它允许我使用 ssh(至少进行身份验证,但这是完全不同的问题)。不再有问题,尽管我仍然不知道最初是什么原因造成的
答案1
如果您可以使用 Ubuntu 机器访问主机,则应尝试下一步:
- 检查 ssh 守护进程是否确实正在运行:(
sudo netstat -tnlp | grep ssh
列出应用 SSH 守护进程过滤器的正在运行的进程)。 - 可选!检查 ssh 守护进程是否使用端口22用于远程连接
cat /etc/ssh/sshd_config | grep Port
。输出应为端口 22或任何其他数字。 - 检查防火墙设置:
sudo iptables -nL
。如果规则数量很大,请将输出重定向到主目录中的文本文件sudo iptables -nL > $HOME/iptables.txt
。 - 将 iptables 规则备份到您的主目录
sudo iptables-save > $HOME/iptables.up.rules
。删除所有 TEMPORARY 规则sudo iptables -F
。(稍后您可以运行来恢复 iptables 规则sudo iptables-restore < $HOME/iptables.up.rules
。)
现在您的 Ubuntu 机器可以接受任何流量,因此您应该能够通过 ssh 远程连接到它。