我已经设置了一台测试机器并尝试从外部进行 ssh,但连接被拒绝。但是当我从本地机器和本地地址尝试时,它工作正常,但如果我尝试全局 ip,它会失败。我已将端口 22 转发到机器。我还缺少其他步骤吗?我也这样做了 netstat -ntlp,我可以看到带有 sshd 服务的端口 22。
Iptables 详细信息
kts bytes target prot opt in out source destination
0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:53
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53
0 0 ACCEPT udp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt:67
0 0 ACCEPT tcp -- virbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67
4 160 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
4 240 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:9000
23 3671 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 state RELATED,ESTABLISHED
0 0 ACCEPT all -- virbr0 * 192.168.122.0/24 0.0.0.0/0
0 0 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0
0 0 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 PHYSDEV match --physdev-is-bridged
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Netstat-tulpn results
Chain OUTPUT (policy ACCEPT 28 packets, 3991 bytes)
pkts bytes target prot opt in out source destination
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1593/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1468/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1671/master
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1349/rpcbind
tcp 0 0 0.0.0.0:52084 0.0.0.0:* LISTEN 1413/rpc.statd
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1862/dnsmasq
tcp 0 0 :::22 :::* LISTEN 1593/sshd
tcp 0 0 ::1:631 :::* LISTEN 1468/cupsd
tcp 0 0 :::36952 :::* LISTEN 1413/rpc.statd
tcp 0 0 :::111 :::* LISTEN 1349/rpcbind
tcp 0 0 :::80 :::* LISTEN 1694/httpd
udp 0 0 0.0.0.0:741 0.0.0.0:* 1413/rpc.statd
udp 0 0 0.0.0.0:5353 0.0.0.0:* 1395/avahi-daemon:
udp 0 0 0.0.0.0:111 0.0.0.0:* 1349/rpcbind
udp 0 0 0.0.0.0:631 0.0.0.0:* 1468/cupsd
udp 0 0 0.0.0.0:53019 0.0.0.0:* 1395/avahi-daemon:
udp 0 0 0.0.0.0:676 0.0.0.0:* 1349/rpcbind
udp 0 0 192.168.122.1:53 0.0.0.0:* 1862/dnsmasq
udp 0 0 0.0.0.0:33975 0.0.0.0:* 1413/rpc.statd
udp 0 0 0.0.0.0:67 0.0.0.0:* 1862/dnsmasq
udp 0 0 :::44763 :::* 1413/rpc.statd
udp 0 0 :::111 :::* 1349/rpcbind
udp 0 0 :::676 :::* 1349/rpcbind
pkts bytes target prot opt in out source destination
答案1
如果您可以从本地地址访问,但不能从外部地址访问,我猜问题出在路由器上的端口转发上,而不是 iptables。如果您想确认这一点,请停止服务器上的 iptables,然后从外部重试。
如果您担心在测试时会被黑客入侵(如果您担心的话,那就有点偏执了,但是呃……),那么请安装并设置 DenyHosts。如果您已经安装了它,那么请检查您的 /etc/hosts.deny 以查看它是否之前阻止了您。
如果它在 iptables 关闭时仍然有效,那么您就知道问题出在某处的规则不正确。