![ssh:没有到主机的路由](https://linux22.com/image/586860/ssh%EF%BC%9A%E6%B2%A1%E6%9C%89%E5%88%B0%E4%B8%BB%E6%9C%BA%E7%9A%84%E8%B7%AF%E7%94%B1.png)
我无法在端口 9922 上设置 ssd。使用端口 22 上的标准配置,一切正常。然后我通过向此文件添加此行将端口更改为 9922 sshd_config
:
Port 9922
我可以毫无问题地通过端口 22 连接到 LAN 中的服务器。切换到端口 9922 后,我得到以下输出:
# ssh -vvv -p 9922 [email protected]
OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 192.168.26.153 [192.168.26.153] port 9922.
debug1: connect to address 192.168.26.153 port 9922: No route to host
ssh: connect to host 192.168.26.153 port 9922: No route to host
#
并nmap -p 9922 192.168.26.153
给出:
# nmap -p 9922 192.168.26.153
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2012-06-11 08:09 CEST
Interesting ports on 192.168.26.153:
PORT STATE SERVICE
9922/tcp filtered unknown
MAC Address: 4A:34:E7:11:9F:22 (Unknown)
Nmap finished: 1 IP address (1 host up) scanned in 0.184 seconds
#
知道缺少了什么吗?
ifconfig
在目标机器上给出:
eth0 Link encap:Ethernet Hardware Adresse 4A:34:E7:11:9F:22
inet Adresse:192.168.26.153 Bcast:192.168.26.255 Maske:255.255.255.0
inet6 Adresse: fe80::4834:e7ff:fe11:9f22/64 G?ltigkeitsbereich:Verbindung
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2723010 errors:0 dropped:0 overruns:0 frame:0
TX packets:552 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenl?nge:1000
RX bytes:561183811 (535.1 MiB) TX bytes:52703 (51.4 KiB)
Interrupt:24
lo Link encap:Lokale Schleife
inet Adresse:127.0.0.1 Maske:255.0.0.0
inet6 Adresse: ::1/128 G?ltigkeitsbereich:Maschine
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenl?nge:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
和route -n
:
# route -n
Kernel IP Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
192.168.10.0 192.168.26.1 255.255.255.0 UG 0 0 0 eth0
192.168.26.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
0.0.0.0 192.168.26.4 0.0.0.0 UG 0 0 0 eth0
#
iptables -L
返回:
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
#
答案1
虽然停止防火墙不是一个明智的想法,但我建议启动防火墙并允许进入端口 9922
/sbin/iptables -A 输入 -p tcp --dport 9922 -j 接受
答案2
您的服务器上可能已启用 SELinux。如果不需要,请使用以下方法暂时禁用它,setenforce 0
或者通过修改/etc/selinux/config
文件永久禁用它。
如果您想使用 SELinux,请允许sshd
绑定到端口 9922:
semanage port -a -t ssh_port_t -p tcp 9922
答案3
对我来说,这是 Selinux 和防火墙的组合,我发现解决方案如下:
正如已经提出的,放宽 Selinux:
semanage port -a -t ssh_port_t -p tcp 9922
在此之后,甚至改变防火墙权限:
sudo firewall-cmd --zone=public --add-port=9922/tcp --permanent
sudo firewall-cmd --reload
这两个更改使我能够使用新的ssh-port
答案4
Port
你的 sshd.conf 中可以有多行,例如
Port 22
Port 2222
#Protocol 2,1
Protocol 2
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
我通常会这样做,因为我会在备用端口上打开外部防火墙/NAT,但希望内部系统通过传统端口 22 访问服务器。
请确保service sshd restart
在任何配置文件更改后重新启动 ssh 守护程序()。
如果你发生什么了nmap -p 9922 192.168.26.153
?它显示端口打开了吗?
您的 ssh 客户端调试输出中的错误应该是“连接超时”,而不是“没有到主机的路由”。您和目标系统之间有什么?