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_keys
i 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 61354
klienta bez powodzenia: ssh: connect to host 192.168.0.186 port 61354: Bad file number
co 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.
sudo iptables -S
wyświetli listę aktywnychiptables
reguł.iptables
nie jestufw
zainstalowany. Zgodnie z postem na forum obraz systemu operacyjnego, który zainstalowałem, jest domyślnie bez zapory.ncat 192.168.0.186 61354
? Czy możesz spróbować z usługą na standardowym porcie?Odpowiedzi:
Musisz użyć
ssh
polecenia opisanego na stronie podręcznika:numer portu MUSI znajdować się przed nazwą hosta / IP, w przeciwnym razie może nie zostać uznany.
Do rzeczywistego błędu
connect
funkcja 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,443
powinien być otwarty).źródło
ssh -vvv -p 61354 192.168.0.186
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ą.
Usunąłem
ListenAddress
iPort
z pliku konfiguracyjnego. Następnie dostałempermission denied (public key)
wiadomość za pomocąssh 192.168.0.186
polecenia, 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_keys
plik i przeniosłem plik do domyślnej lokalizacji~/.ssh/authorized_keys
i nawiązałem połączeniessh [email protected]
. Teraz działa poprawnie. :-)źródło