我在跑步:
$ ssh user@ip_address
并且等待很长时间没有回应。我尝试验证我的端口的状态:
$ a=`nmap ip_address -PN -p ssh | grep filtered`
$ echo $a
22/tcp filtered ssh
那么要确认有过滤器吗?我怎样才能摆脱这个过滤器?
我当时查了一下:
$ netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
和:
$ ps -ef | grep 'ssh[d]'
root 1017 1 0 10:58 ? 00:00:00 /usr/sbin/sshd -D
Ubuntu 安装是“原始”的,所以我怀疑我的系统上是否存在与防火墙相关的问题。如果我错了,请纠正我。
关于如何安全地打开端口有什么想法吗?我真的需要启用这台计算机从外部进行 ssh 连接。
答案1
打开防火墙中的端口(暂时假设这是过滤的地方)。在服务器(您想要的计算机ssh
)上,尝试以下操作:
sudo ufw allow 22/tcp
在 shell 中,然后在此处发布任何错误消息。
另外,请发布输出
sudo netstat -tlpn
特别是如果防火墙命令不起作用,这样我们就可以看到sshd
.
如果netstat
找不到上面的命令(新的 iproute2 工具),请尝试替代
sudo ss -tlpn
输出的可读性较差,netstat
但仍应显示sshd
进程在端口 22 上执行“LISTEN”。
答案2
您和 ip_address 之间的某些因素阻止了与 ip_address:22 的连接,导致无法收到响应。这可能是 ip_address 服务器本身,也可能是您和它之间的任何盒子。
您需要追踪发生阻止的位置并打开端口。