Mam dwa komputery za tym samym routerem. Nazwijmy je A i B.
Puszka SSH do B w następujący sposób: ssh usr@<internal ip of computer>
B może wykonać SSH do A, robiąc to samo, ale należy użyć zewnętrznego adresu IP. Przekierowałem port 22 mojego routera na adres IP komputera A, aby wszystko miało dla mnie sens.
Chcę jednak również przekierować port 26 na komputer B i SSH spoza sieci, używając zewnętrznego adresu IP dla obu, ale określając port 22 lub 26, aby skutecznie wybrać, którego komputera użyć.
Próbowałem zezwolić na port 26 przez OUTPUT z iptables
A i INPUT z B, ale to nie działało. Przekierowałem również port 26 na wewnętrzny adres IP B (przez router), podobnie jak w przypadku 22 dla A.
Oto, co otrzymuję, gdy próbuję SSH z A do B przy użyciu zewnętrznego adresu IP i portu 26:
ssh: connect to host xx.xx.xxx.xx port 26: Connection refused.
Wersje:
- A = OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 marca 2012
- B = OpenSSH_6.0p1 Debian-4, OpenSSL 1.0.1c 10 maja 2012 r
A ma 12.04 Ubuntu, B to Raspberry Pi z Raspbian.
EDYCJA: Coś, o czym zapomniałem wstawić: Próbowałem zmienić plik konfiguracyjny SSH (okazało się, że jest /etc/ssh/ssh_config
) Odkomentowałem (usunąłem #
) linię Port
i zmieniłem 22
na 26
. To wciąż dawało mi komunikat o odmowie połączenia. (Uruchomiłem ponownie bezskutecznie.)
źródło
Odpowiedzi:
Wygląda na to, że nie używasz SSH na porcie 26 na drugim komputerze. Możesz zmienić numer portu na tym komputerze na 26.
Edytuj lub
/etc/ssh/sshd_config
nie zapomnij zrestartować SSH lub pozostaw go na 22, ale przekieruj port 26 na routerze do portu 22 na drugim komputerze. Nie zapomnij również zmienić ustawień zapory na drugim komputerze, aby umożliwić połączenia.źródło
Jeśli korzystasz z systemu Linux i chcesz połączyć się z serwerem SSH na porcie 26, możesz użyć następującego polecenia.
Uwaga:
źródło
Używam portu 22 tylko do dostępu do intranetowego ssh.
Aby uzyskać dostęp przez Internet, używam niestandardowego (nietypowego) portu. Ma to tę zaletę, że zmniejszam obciążenie generowane przez dzieci skryptów, które skanują port 22 w poszukiwaniu „dobrze znanych nazw użytkowników”.
Do zewnętrznych procesów sshd są sterowane
xinetd
i działa równolegle do wewnętrznegosshd
procesu. W poniższym przykładzie używam portu 12345:Możesz to zmienić na dowolny dostępny wolny numer portu w systemie. Być może wyższa wartość sprawi, że jest również mało prawdopodobne, że ten port zostanie przeskanowany przez „szybkie skanowanie portu” .
xinetd
Konfiguracja jest:Plik
/etc/ssh/external-ssdh.config
może być kopią zwykłejsshd
konfiguracji. Upewnij się, że skonfigurowano następujące instrukcje:Proponuję również wymusić uwierzytelnianie za pomocą klucza publicznego i wyłączyć uwierzytelnianie za pomocą hasła w celu uzyskania dostępu do Internetu:
źródło
Porty nasłuchiwania mogą być również powiązane z adresami IP
/ etc / ssh / sshd_config:
źródło
Jak wyjaśniłem w pokrewnej odpowiedzi , klient ssh pozwala na określenie formatu URI jako
ssh://user@host:1234
. Na przykład:gdzie 2222 to numer portu. Zamiast tego wpisz numer portu, którego zamierzasz użyć. Oczywiście pamiętaj, że aby połączyć się z określonym portem, serwer ssh (na hoście, z którym próbujesz się połączyć) musi przede wszystkim nasłuchiwać na określonym porcie
źródło
Nie jest dobrym pomysłem uruchamianie ssh na domyślnym porcie (TCP / 22), ani przekazywanie dalej z WAN IP 22 do dowolnego portu używającego ssh-server na LAN IP.
W bardziej ogólnym sensie połączenie z usługą ssh-server powinno nasłuchiwać na tym porcie. Musisz
/etc/ssh/sshd_config
( zwróć uwagę na d ) od#Port 22
doPort 26
. To znaczy, odkomentuj i zmień port. Może lepszym niż 26 byłoby coś losowego powyżej , na przykład 42895.Uruchom ponownie usługę ssh-server
Następnie z klienta ssh będziesz mógł się połączyć
Premia:
mosh
Jeśli pakiet mosh jest zainstalowany na serwerze, użyj go
źródło