Nie można połączyć się z lokalnym serwerem SSH - zły numer pliku

1

Mam na nim Odroid XU4 z serwerem Ubuntu 14.04.

Zainstalowałem serwer ssh z apt-get install openssh-server. Dostałem z lokalnym IP hostname -I, który jest 192.168.0.186, że generowany losowo numer portu: 61354. Stworzyłem plik /etc/ssh/authorized_keysi dołączony klucz publiczny komputerze klienckim: cat /media/stick/id_rsa.pub >> /etc/ssh/authorized_keys. Następnie zastąpiłem plik konfiguracyjny nano /etc/ssh/sshd_config. I ustawić go na PasswordAuthentication no, ListenAddress 192.168.0.186, Port 61354, AuthorizedKeysFile /etc/ssh/authorized_keys. Następnie ponownie uruchomiłem komputer.

Próbowałem uzyskać do niego dostęp za pomocą SSH, używając ssh 192.168.0.186 -p 61354klienta bez powodzenia: ssh: connect to host 192.168.0.186 port 61354: Bad file numberco jest dalekie od pełnego komunikatu o błędzie. Udało mi się ping 192.168.0.186, więc adres IP jest w porządku. Jak to naprawić?

edytować:

$ ssh -vvv -p 61354 192.168.0.186
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /c/Users/inf3rno/.ssh/config
debug2: ssh_connect: needpriv 0
debug1: Connecting to 192.168.0.186 [192.168.0.186] port 61354.
debug1: connect to address 192.168.0.186 port 61354: Connection refused
ssh: connect to host 192.168.0.186 port 61354: Bad file number

Na serwerze próbowałem ps aux | grep sshd, zgodnie z nim działa serwer ssh. Prawdopodobnie istnieje zapora ogniowa, która uniemożliwia klientowi połączenie się z serwerem. Nie wiem, co dokładnie jest w obrazie systemu operacyjnego, który zainstalowałem tutaj: http://odroid.in/ubuntu_14.04lts/ . Próbuję dowiedzieć się, czy mam zaporę ogniową, czy nie. (Według forum nie ma zainstalowanej zapory ogniowej).

Sprawdziłem z nmap

[inf3rno@inf3rno ~]$ sudo nmap -sS 192.168.0.186 -p 61354
[sudo] password for inf3rno: 
Starting Nmap 7.00 ( https://nmap.org ) at 2016-02-07 15:22 CET
Nmap scan report for 192.168.0.186
Host is up (0.0041s latency).
PORT      STATE  SERVICE
61354/tcp closed unknown
MAC Address: 00:1E:06:30:1E:CE (Wibrain)

Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds

i traceroute

traceroute to 192.168.0.186 (192.168.0.186), 30 hops max, 60 byte packets 1 192.168.0.186 (192.168.0.186) 5.833 ms 5.773 ms 8.347 ms

Wypróbowałem prosty serwer z gniazdami, korzystając z tego samouczka: http://www.binarytides.com/netcat-tutorial-for-beginners/

$ nc -l -v 1234 # starting the socket server
$ telnet localhost 1234 # client connection: ok
$ telnet 192.168.0.186 1234 # client connection: refused

Jest to więc wyraźnie związane z siecią i prawdopodobnie muszę sprawdzić ustawienia modemu. Wypróbowałem to na innym komputerze z Fedorą z tymi samymi wynikami.

wniosek

Okazało się, że jest to coś związanego z siecią. Najprawdopodobniej na komputerze nie jest zainstalowana zapora ogniowa, więc nie jest to problem związany z zaporą. Mam to samo na instalacji Fedory 23. Myślę, że jest to coś ogólnego w sieci i prawdopodobnie spowodowane przez nowy modem, który dostałem. Próbuję sprawdzić ustawienia modemu, może znajdę źródło problemu.

inf3rno
źródło
sudo iptables -Swyświetli listę aktywnych iptablesreguł.
Jakuje
@Jakuje Na serwerze (i kliencie) nie ma ani iptablesnie jest ufwzainstalowany. Zgodnie z postem na forum obraz systemu operacyjnego, który zainstalowałem, jest domyślnie bez zapory.
inf3rno
Co ncat 192.168.0.186 61354? Czy możesz spróbować z usługą na standardowym porcie?
Jakuje
@Jakuje Odmówiono połączenia, jeśli muszę go użyć na kliencie ...
inf3rno

Odpowiedzi:

0

Musisz użyć sshpolecenia opisanego na stronie podręcznika:

ssh -p 61354 192.168.0.186

numer portu MUSI znajdować się przed nazwą hosta / IP, w przeciwnym razie może nie zostać uznany.

Do rzeczywistego błędu connectfunkcja jest zablokowana, jak opisano w pytaniu na SO . Musisz otworzyć port w zaporze po drodze ( traceroute 192.168.0.186) lub użyć otwartego portu (jeśli nie uruchamiasz serwera https na tym samym komputerze, 443powinien być otwarty).

Jakuje
źródło
Wciąż zły numer pliku ...
inf3rno
ssh -vvv -p 61354 192.168.0.186
wysłać
Zredagowałem pytanie.
inf3rno
Jak mogę dowiedzieć się, czy mam zaporę ogniową? Według forum, które przeczytałem, w obrazie systemu operacyjnego zainstalowanym na urządzeniu nie ma zapory.
inf3rno
Dodałem notatkę, aby dowiedzieć się, co jest w drodze w twojej sieci. Wygląda bardziej sprzętowo na urządzeniu sieciowym (routerze?), A nie na oprogramowaniu na urządzeniu końcowym.
Jakuje
0

Pomimo sekcji podsumowującej w pytaniu udało mi się wysłać dane między komputerami z serwerem gniazd przy użyciu tych samych poleceń. To, co zrobiłem wcześniej, to dostęp do strony administratora modemu. Przeszedł pierwszy proces dostępu, taki jak zmiana hasła itp. Nie zmieniłem niczego w ustawieniach, ale potem komunikacja działała poprawnie. Nie jestem pewien, czy źle wpisałem polecenia, czy ta pierwsza procedura dostępu to naprawiła, tak naprawdę nie ma znaczenia. Źródłem problemu była coś innego.

Serwer SSH nadal nie działał po tej części, więc zacząłem grać z konfiguracją.

Następnie zastąpiłem plik konfiguracyjny nano / etc / ssh / sshd_config. Ustawiłem go na PasswordAuthentication no, ListenAddress 192.168.0.186, Port 61354, AuthorizedKeysFile / etc / ssh / Author_keys.

Usunąłem ListenAddressi Portz pliku konfiguracyjnego. Następnie dostałem permission denied (public key)wiadomość za pomocą ssh 192.168.0.186polecenia, więc połączenie zostało nawiązane, ale uwierzytelnianie nie powiodło się. Mam więc jeszcze wiele do zrobienia, ale przynajmniej jest to związane.

Na koniec też usunąłem AuthorizedKeysFile /etc/ssh/authorized_keysplik i przeniosłem plik do domyślnej lokalizacji ~/.ssh/authorized_keysi nawiązałem połączenie ssh [email protected]. Teraz działa poprawnie. :-)

inf3rno
źródło
1
Porty powyżej 32000 służą do połączeń z klientami, lepiej pozostań poniżej usługi. Aby mieć centralny katalog z kluczami użytkowników, użyj: AuthorizedKeysFile / etc / ssh /
Author_keys