wprowadzenie
OpenSSH jest potężnym zbiorem narzędzi do zdalnego sterowania i przesyłania danych między komputerami w sieci. Dowiesz się również o niektórych ustawieniach konfiguracyjnych możliwych w aplikacji openssh server i jak je zmienić w systemie Ubuntu.
OpenSSH jest swobodnie dostępną wersją rodziny narzędzi protokołu Secure Shell (SSH) do zdalnego sterowania lub przesyłania plików między komputerami. Tradycyjne narzędzia używane do realizacji tych funkcji, takie jak telnet lub rcp, są niezabezpieczone i przekazują hasło użytkownika w czystym tekście, gdy są używane. OpenSSH zapewnia demona serwera i narzędzia klienckie, aby ułatwić bezpieczne, szyfrowane operacje zdalnego sterowania i przesyłania plików, skutecznie zastępując starsze narzędzia.
komponent serwera OpenSSH, sshd, stale nasłuchuje połączeń klienta z dowolnego narzędzia klienckiego. Gdy wystąpi żądanie połączenia, sshd ustawia poprawne połączenie w zależności od rodzaju połączenia Narzędzia klienta. Na przykład, jeśli komputer zdalny łączy się z aplikacją kliencką ssh, serwer OpenSSH ustawia sesję zdalnego sterowania po uwierzytelnieniu. Jeśli zdalny użytkownik łączy się z serwerem OpenSSH za pomocą scp, Demon serwera OpenSSH inicjuje bezpieczną kopię plików między serwerem a klientem po uwierzytelnieniu. OpenSSH może używać wielu metod uwierzytelniania, w tym zwykłego hasła, klucza publicznego i biletów Kerberos.
instalacja
instalacja aplikacji klienckich i serwerowych OpenSSH jest prosta. Aby zainstalować aplikacje klienckie OpenSSH w systemie Ubuntu, użyj tego polecenia w wierszu polecenia terminala:
sudo apt install openssh-client
aby zainstalować aplikację openssh server i powiązane pliki wsparcia, użyj tego polecenia w wierszu polecenia terminala:
sudo apt install openssh-server
Konfiguracja
Możesz skonfigurować domyślne zachowanie aplikacji openssh server, SSHD, poprzez edycję pliku /etc/ssh/sshd_config
. Aby uzyskać informacje o dyrektywach konfiguracyjnych używanych w tym pliku, można wyświetlić odpowiednią stronę podręcznika za pomocą następującego polecenia, wydanego w wierszu polecenia terminala:
man sshd_config
w pliku konfiguracyjnym sshd znajduje się wiele dyrektyw kontrolujących takie rzeczy jak ustawienia komunikacji i tryby uwierzytelniania. Poniżej znajdują się przykłady dyrektyw konfiguracyjnych, które można zmienić edytując plik /etc/ssh/sshd_config
.
Wskazówka
przed edycją pliku konfiguracyjnego należy wykonać kopię oryginalnego pliku i chronić go przed zapisem, aby mieć oryginalne ustawienia jako odniesienie i ponownie użyć w razie potrzeby.
skopiuj plik
/etc/ssh/sshd_config
i zabezpiecz go przed zapisaniem za pomocą następujących poleceń, wydanych w wierszu polecenia terminala:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.originalsudo chmod a-w /etc/ssh/sshd_config.original
Ponadto ponieważ utrata serwera ssh może oznaczać utratę drogi do serwera, sprawdź konfigurację po jej zmianie i przed restart serwera:
sudo sshd -t -f /etc/ssh/sshd_config
oto przykłady dyrektyw konfiguracyjnych, które możesz zmienić:
- aby ustawić OpenSSH tak, aby nasłuchiwał na porcie TCP 2222 zamiast domyślnego portu TCP 22, Zmień dyrektywę portów jako taką:
Port 2222
- aby serwer OpenSSH wyświetlał zawartość pliku
/etc/issue.net
jako baner przed zalogowaniem, po prostu dodaj lub zmodyfikuj tę linię w pliku/etc/ssh/sshd_config
:
Banner /etc/Issue.net
Po wprowadzeniu zmian w pliku /etc/ssh/sshd_config
, zapisz plik i uruchom ponownie aplikację serwera SSHD, aby wprowadzić zmiany za pomocą następującego polecenia w wierszu polecenia terminala:
sudo systemctl restart sshd.service
Ostrzeżenie
wiele innych dyrektyw konfiguracyjnych dla SSHD jest dostępnych do zmiany zachowania aplikacji serwerowej zgodnie z Twoimi potrzebami. Należy jednak pamiętać, że jeśli jedyną metodą dostępu do serwera jest ssh i popełnisz błąd podczas konfigurowania sshd za pomocą pliku
/etc/ssh/sshd_config
, może się okazać, że po ponownym uruchomieniu serwera jesteś zablokowany. Dodatkowo, jeśli dostarczona jest nieprawidłowa dyrektywa konfiguracyjna, serwer sshd może odmówić uruchomienia, więc zachowaj szczególną ostrożność podczas edycji tego pliku na zdalnym serwerze.
klucze SSH
SSH umożliwiają uwierzytelnianie między dwoma hostami bez potrzeby podawania hasła. Uwierzytelnianie klucza SSH wykorzystuje klucz prywatny i klucz publiczny.
aby wygenerować klucze, z terminala wpisz:
ssh-keygen -t rsa
spowoduje to wygenerowanie kluczy przy użyciu algorytmu RSA. W momencie pisania tego tekstu wygenerowane klucze będą miały 3072 bity. Możesz zmienić liczbę bitów za pomocą opcji-b
. Na przykład, aby wygenerować klucze o 4096 bitach, możesz zrobić:
ssh-keygen -t rsa -b 4096
podczas procesu zostanie wyświetlony monit o podanie hasła. Po prostu naciśnij klawisz Enter, gdy pojawi się monit o utworzenie klucza.
domyślnie klucz publiczny jest zapisywany w pliku ~/.ssh/id_rsa.pub
, podczas gdy ~/.ssh/id_rsa
jest kluczem prywatnym. Następnie skopiuj plik id_rsa.pub
do zdalnego hosta i dołącz go do ~/.ssh/authorized_keys
, wprowadzając:
ssh-copy-id username@remotehost
na koniec sprawdź dwukrotnie uprawnienia w pliku authorized_keys
, tylko plik uwierzytelniony użytkownik powinien mieć uprawnienia do odczytu i zapisu. Jeśli uprawnienia nie są poprawne zmień je przez:
chmod 600 .ssh/authorized_keys
powinieneś być teraz w stanie SSH do hosta bez monitu o hasło.
Importuj klucze z publicznych serwerów kluczy
obecnie wielu użytkowników ma już klucze ssh zarejestrowane w usługach takich jak launchpad lub github. Można je łatwo zaimportować za pomocą:
ssh-import-id <username-on-remote-service>
prefikslp:
jest implikowany i oznacza pobieranie z Launchpada, alternatywnygh:
spowoduje, że narzędzie pobierze z github.
uwierzytelnianie dwuskładnikowe za pomocą U2F/FIDO
OpenSSH 8.2 dodano obsługę sprzętowych urządzeń uwierzytelniających U2F / FIDO. Urządzenia te są używane do zapewnienia dodatkowej warstwy zabezpieczeń oprócz istniejącego uwierzytelniania opartego na kluczach, ponieważ token sprzętowy musi być obecny, aby zakończyć uwierzytelnianie.
jest bardzo prosty w obsłudze i konfiguracji. Jedynym dodatkowym krokiem jest wygenerowanie nowej klawiatury, która może być używana z urządzeniem sprzętowym. W tym celu można użyć dwóch typów kluczy: ecdsa-sk
I ed25519-sk
. Ten pierwszy ma szersze wsparcie sprzętowe, podczas gdy ten drugi może potrzebować nowszego urządzenia.
po wygenerowaniu klawiatury, może ona być używana tak, jak zwykle używasz dowolnego innego typu klucza w openssh. Jedynym wymogiem jest to, że aby użyć klucza prywatnego, urządzenie U2F musi być obecne na hoście.
na przykład podłącz urządzenie U2F i wygeneruj klawiaturę do użycia z nim:
$ ssh-keygen -t ecdsa-skGenerating public/private ecdsa-sk key pair.You may need to touch your authenticator to authorize key generation. <-- touch deviceEnter file in which to save the key (/home/ubuntu/.ssh/id_ecdsa_sk): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ubuntu/.ssh/id_ecdsa_skYour public key has been saved in /home/ubuntu/.ssh/id_ecdsa_sk.pubThe key fingerprint is:SHA256:V9PQ1MqaU8FODXdHqDiH9Mxb8XK3o5aVYDQLVl9IFRo ubuntu@focal
teraz wystarczy przenieść część publiczną na serwer do ~/.ssh/authorized_keys
I jesteś gotowy do pracy:
$ ssh -i .ssh/id_ecdsa_sk [email protected] user presence for key ECDSA-SK SHA256:V9PQ1MqaU8FODXdHqDiH9Mxb8XK3o5aVYDQLVl9IFRo <-- touch deviceWelcome to Ubuntu Focal Fossa (GNU/Linux 5.4.0-21-generic x86_64)(...)[email protected]:~$