![ssh 到不在同一域中的服务器](https://linux22.com/image/1582018/ssh%20%E5%88%B0%E4%B8%8D%E5%9C%A8%E5%90%8C%E4%B8%80%E5%9F%9F%E4%B8%AD%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我有一台运行 Ubuntu 16.04 的 Linux 服务器。我在上面安装了 ssh-server,并让它运行,sudo ssh service start
并且可以使用 看到它ps aux | grep ssh
。我想从我的笔记本电脑(也运行 Ubuntu 16.04) ssh 进入它。它们都连接到同一个 Wifi。当我使用 从我的笔记本电脑 ssh 到服务器时ssh username@serverIP
,我得到
ssh: connect to host <serverIP> port 22: Connection timed out
由于这里的一些建议是使用其他端口号而不是 22,因此我在/etc/ssh/sshd_config
服务器上的文件中将端口更改为 2220。然后我使用笔记本电脑进行 ssh 操作ssh username@serverIP -p 2220
,但仍然收到相同的连接被拒绝错误。
接下来,我手动更改了服务器上某个接口的 IP 地址和网络掩码,ifconfig eth0 <laptopIP + 1> netmask <laptop_subnet>
使其与我的笔记本电脑位于同一子网中。然后我尝试使用 sshssh ssh username@LaptopIP+1 -p 2220
并得到
ssh: connect to host <laptopIp+1> port 2220: Connection refused
我是不是把事情搞复杂了?我该如何连接到这个服务器?
答案1
这很可能是防火墙阻止了连接。您应该使用命令查看防火墙策略sudo ufw status
。您可能会得到类似以下的输出(但打开的端口可能较少):
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
25,53,80,110,443/tcp ALLOW OUT Anywhere
53,67,68/udp ALLOW OUT Anywhere
51413/tcp ALLOW OUT Anywhere
51413/udp ALLOW OUT Anywhere
6969/tcp ALLOW OUT Anywhere
25,53,80,110,443/tcp (v6) ALLOW OUT Anywhere (v6)
53,67,68/udp (v6) ALLOW OUT Anywhere (v6)
51413/tcp (v6) ALLOW OUT Anywhere (v6)
51413/udp (v6) ALLOW OUT Anywhere (v6)
6969/tcp (v6) ALLOW OUT Anywhere (v6)
如果您将端口更改为默认值 22 以外的其他端口,则尤其如此。您可以使用相同的命令允许特定端口上的连接:
sudo ufw allow 22
或者,如果您想继续使用备用端口,请修改上述命令以允许 2220(如果这是生产或“公共”服务器,当然建议更改默认端口)。一旦您允许该端口,请再次检查 ufw 的状态以确保无误,然后尝试通过 ssh 进行远程连接。
也可以看看:https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands
答案2
检查服务器防火墙,您可能需要创建规则来允许连接到特定端口。
以下是一个参考:https://askubuntu.com/questions/9206/is-there-a-preinstalled-or-automatic-firewall