Назад | Перейти на главную страницу

ssh: нет маршрута к хосту

У меня не получается настроить ssd на порт 9922. При стандартной конфигурации на порту 22 все работает нормально. Затем я меняю порт на 9922, добавляя эту строку в ths sshd_config файл:

Port 9922

Могу без проблем подключиться к серверу в локальной сети по 22 порту. После переключения на порт 9922 я получаю следующий вывод:

# ssh -vvv -p 9922 root@192.168.26.153
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         
# 

Вероятно, на вашем сервере должен быть включен SELinux. Если он вам не нужен, временно отключите его с помощью setenforce 0 или навсегда, изменив /etc/selinux/config файл.

Если вы хотите использовать SELinux, разрешите sshd для привязки к порту 9922:

semanage port -a -t ssh_port_t -p tcp 9922

Хотя останавливать брандмауэр - не самая лучшая идея, я предлагаю запустить брандмауэр и разрешить входящий порт 9922 с помощью

/ sbin / iptables -A ВВОД -p tcp --dport 9922 -j ПРИНЯТЬ

Для меня это была комбинация Selinux и Firewall, я нашел решение таким образом:

Как уже предлагалось, расслабляющий Селинукс:

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

Вы можете иметь несколько Port строки в вашем sshd.conf, например

Port 22
Port 2222
#Protocol 2,1
Protocol 2
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

Обычно я делаю это, потому что у меня есть внешний брандмауэр / NAT, открытый на альтернативном порту, но я хочу, чтобы внутренние системы обращались к серверу на традиционном порту 22.

Убедитесь, что вы перезапустили демон ssh (service sshd restart) после любых изменений файла конфигурации.

Что будет, если вы nmap -p 9922 192.168.26.153? Показывает, что порт открыт?

Ошибка в выводе отладки вашего ssh-клиента должна быть «Тайм-аут соединения» вместо «Нет маршрута к хосту». Что между вами и целевой системой?