Zmieniłem domyślny port SSH na moim serwerze domowym (w /etc/ssh/sshd_config
pliku) na port 54747, a następnie ponownie uruchomiłem usługi ssh
i sshd
(nigdy nie wiem, który z nich, więc zrobiłem oba, aby zachować bezpieczeństwo). Aby przetestować moją konfigurację, wylogowałem się, a następnie wróciłem bez problemu.
Kilka dni później zainstalowałem apt aktualizacje, a następnie ponownie uruchomiłem serwer. Kiedy próbowałem ponownie włączyć SSH (na porcie 54747), otrzymałem błąd odmowy połączenia.
Z jakiegoś powodu próbowałem SSH na domyślnym porcie i zadziałało! Wróciłem, żeby sprawdzić sshd_config, ale nadal miał niestandardowy port. Zrestartowałem więc ssh
i sshd
usługi, i wróciłem do „normalnego” zachowania (ssh na porcie 54747). Próbowałem ponownie uruchomić komputer ponownie, a połączenie odmówiło ponownie ...
Czy ktoś wie, co zrobiłem źle?
Dodatkowe informacje:
- Ubuntu 16.04.2 LTS
- Serwer jest również używany przez HTPC z otwartą sesją (ten sam użytkownik co SSH) na moim telewizorze
- SSH korzystam z klucza RSA mojego laptopa i wyłączyłem autoryzację hasła
- Kiedyś się restartowałem
sudo reboot -h now
, ale po wyszukiwaniu odkryłem, że niektórzy ludzie go zniechęcili, więc próbowałemsudo reboot
, ale żadnych różnic
EDYCJA Sekwencja wydarzeń:
- Zmień port SSH z 22 na 54747 w
/etc/ssh/sshd_config
- Uruchom ponownie usługi ssh i sshd
- Zakończ bieżącą sesję SSH
- SSH powrócił pomyślnie na porcie 54747
- Restart
- Błąd połączenia SSH na porcie 54747, ale powodzenie na porcie 22
- Uruchom ponownie usługi ssh i sshd
- SSH z powrotem pomyślnie na porcie 54747, błąd połączenia na porcie 22
- Uruchom ponownie i wróć do 6
EDYCJA 1: netstat
wyjście
rgo@ATLAS:~$ sudo netstat -lntp | grep :54747
rgo@ATLAS:~$ sudo netstat -lntp | grep :22
tcp6 0 0 :::22 :::* LISTEN 1/init
EDYCJA 2: service sshd status
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: inactive (dead)
EDYCJA 3: lsof -i | grep ssh
systemd 1 root 46u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
systemd 1 root 49u IPv6 14641 0t0 TCP *:ssh (LISTEN)
sshd 4088 root 3u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4088 root 4u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4202 rgo 3u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
sshd 4202 rgo 4u IPv6 42724 0t0 TCP ATLAS:ssh->192.168.1.27:49837 (ESTABLISHED)
W celach informacyjnych ATLAS to nazwa hosta serwera zdalnego, 192.168.1.27 to adres IP LAN mojego laptopa, a polecenie zostało wykonane między krokami 6 i 7
ufw status
Status: inactive
EDYCJA 4: ps -ef |grep sshd
root 4088 1 0 22:40 ? 00:00:00 sshd: rgo [priv]
rgo 4202 4088 0 22:40 ? 00:00:00 sshd: rgo@pts/1 sshd
źródło
Port 10285
. Google pokazuje kilka wyników dla 54747 ... (3) Również serwer SSH może pracować z kilkoma portami jednocześnie. Utwórz dwie osobne dyrektywy dla każdego portu:Port 22
aPort 54747
następnie otwórz tylko drugą w zaporze. (4) Możesz wypróbowaćMatch LocalPort
dyrektywę umieszczoną na początkusshd_c
.Odpowiedzi:
ssh może być „aktywowane przez gniazdo” przez systemd w zależności od konfiguracji, co oznacza, że początkowo systemd konfiguruje port nasłuchiwania, a sshd jest uruchamiany tylko przy pierwszym połączeniu klienta. Ma to na celu przyspieszenie czasu uruchamiania: demony usług są uruchamiane tylko na żądanie.
Oznacza to jednak, że należy również skonfigurować systemd do pasującego portu. Znajdziesz konfigurację systemu, w
/lib/systemd/system/ssh.socket
której listyListenStream=22
. Aby to zmienić, utwórz plik/etc/systemd/system/ssh.socket.d/port.conf
(wssh.socket.d
razie potrzeby utwórz katalog ) zawierający:Zmień numer na żądany port. Pierwszy pusty wpis usuwa poprzednie ustawienie domyślne, a następny wpis dodaje nowy. Zastępuje to domyślnie dostarczone
/lib/systemd/system/ssh.socket
i musi zostać wykonane oprócz zmiany/etc/ssh/sshd_config
.Następnie uruchom,
sudo systemctl daemon-reload
aby poinformować systemd o twoich zmianach isudo systemctl reload ssh
czy twój demon ssh był wcześniej uruchomiony.źródło
/etc/systemd/system/ssh.socket.d/port.conf
jest ignorowana, a ponowne uruchomienie wciąż resetuje port do 22. Czy nazwa pliku jest odpowiednia? Nie można znaleźć dobrej dokumentacji dotyczącej nadpisań systemowych na Ubuntu ..conf
. Zobacz systemd-system.conf (5), aby uzyskać szczegółowe informacje na temat plików konfiguracyjnych zastępujących systemd.systemctl status ssh.socket
aby sprawdzić, czy jest włączony i czego nasłuchuje.ListenStream=
linii przed niestandardowym portem zapobiegło temu, nie jestem pewien, dlaczego. Może to „wyczyści”ListenStream=22
ustawienie domyślne/lib/systemd/system/ssh.socket
? Dziwny sposób na zastąpienie ustawień. Może warto dodać to do odpowiedzi?Sprawdź ustawienia portu w
/etc/ssh/sshd_config
pliku. Upewnij się, że edytujesz jako sudo lub użytkownik w grupie sudo. Wszystko, co musisz zrobić, aby ustawić port, to w jednym typie liniiPort 54747.
Teraz ponownie uruchom usługę ssh, uruchamiającservice sshd restart.
Następnie sprawdź, czy ssh nasłuchuje na tym porcie, uruchamiającsudo netstat -lntp | grep ssh.
Uruchom ponownie i przetestuj.Sprawdź także ustawienia sieciowe. Jeśli jesteś w sieci firmowej, upewnij się, że jesteś we właściwej sieci vlan.
źródło
Port 22
linięPort 54747
tylko na. Poza tym netstat, który mi dałeś, nie miał żadnego wyjścia. Dodałem zmodyfikowany w moim OPssh -i key.txt user@ipaddress -p 54747
. Sprawdź także, czy coś innego nasłuchuje na tym porcie. Zrobićsudo lsof -i | grep ssh
. Możesz także sprawdzić zaporę ogniową, aby upewnić się, że niczego nie blokuje. Zrobić:sudo ufw status
.shutdown -r now
. Spróbuj i daj nam znać wyniki. Zobacz ten artykuł w celach informacyjnych: askubuntu.com/questions/483670/…sudo reboot -h now
lub `` sudo reboot``Czasami coś idzie nie tak. Gdybym był na twoim miejscu, spróbowałbym z:
źródło
cp
polecenie jest na wszelki wypadek, zwykle proces ponownej instalacji nie dotyka plików konfiguracyjnych.ssh jest procesem klienta, który arbitrażuje i utrzymuje połączenie sesji użytkownika z serwerem ssh. sshd to demon działający na serwerze ssh, który nasłuchuje i uwierzytelnia żądania połączenia ssh.
Plik konfiguracyjny na serwerze sshd, który jest odczytywany podczas uruchamiania usługi sshd (wymaga edycji uprawnień sudo) to
Usługa powinna zacząć się od
Aby ponownie uruchomić sshd, co wiązałoby się z ponownym odczytaniem pliku sshd_config
Aby sprawdzić, jakiego portu nasłuchuje demon sshd, a także inne przydatne informacje na temat typu serwera ssh
Wykonaj następujące kroki w określonej kolejności:
Uruchom ponownie serwer ssh
Otwórz sesję terminala na serwerze ssh (nie połączenie z nim ssh)
Rodzaj
hostname
Jeśli nazwa hosta nie zwraca nazwy serwera ssh (w tym przypadku atlasu), powtórz poprawnie poprzedni krok.
grep Port /etc/ssh/sshd_config
- zanotuj numer portu. Powinien być ten, który podałeśsudo service sshd status
Jeśli status zgłasza, że jest aktywny, działa i nasłuchuje na określonym porcie niestandardowym, oznacza to, że jesteś dobry w tym zakresie. Jeśli nie, uruchomienie usługi może nie wywoływać zmodyfikowanego pliku sshd_config, ale inny plik konfiguracyjny zawierający informacje domyślne. Jeśli usługa się nie uruchomiła (mówi, że jest martwa, nie jest aktywna i nie działa, to jest to inny problem niż to, o co prosiłeś.
Kroki te prawdopodobnie określą pierwotną przyczynę problemu, o który pytasz.
Dla celów testowych i dla uproszczenia: po stronie klienta, z sesji terminalowej ssh na serwer ssh w następujący sposób
Na podstawie informacji zwrotnych OP podejrzewam, że sshd nie uruchamia się podczas uruchamiania, ale uruchamia się poprawnie po ręcznym wywołaniu. Pomyślne połączenia ssh przez port 22 mogą NIE być połączone z serwerem ssh, ale z czymś innym (np. Localhost). Aby to udowodnić lub obalić, po podłączeniu przez ssh
Na podstawie tego, co mówi OP, domyślam się, że nazwa hosta nie będzie atlasem serwera ssh.
Aby to jeszcze bardziej odizolować, po ponownym uruchomieniu serwera ssh, ale zanim zrobisz cokolwiek więcej , z sesji terminala na serwerze ssh (Atlas)
Jeśli to się nie powiedzie, tak jak powinno, to
Jeśli to nie zadziała, potwierdzi to wyniki uzyskane podczas działania
źródło
ssh -p <PORT> <USER>@<IP>
, z kluczem prywatnym dodanym do agenta.Prawdopodobnie właśnie odpowiedziałeś Y, gdy apt wykrył różnice między twoim sshd_config a pakietem. Pyta, czy chcesz zainstalować wersję pakietu mantainer, czy zachować swoją.
źródło
Możliwe przyczyny, o których mogę myśleć
/usr/lib/systemd/system/sshd.socket
najwyraźniej poprzez plik : https://www.vultr.com/docs/how-to-change-ssh-port-on-coreosźródło
find /etc/ -iname "*ssh*"
celu znalezienia dodatkowych wskazówek.