Konfiguracja klienta
Ustawiać ~/.ssh/config
Konfigurowanie wpisów hosta ssh
jest naprawdę łatwe i pozwoli zaoszczędzić wiele kłopotów. Oto przykład:
Host digitaloceanbox
Hostname 111.111.111.111
User root
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/digitalocean-rsa
ForwardX11 yes
Host github github.com
Hostname github.com
User git
PubKeyAuthentication yes
IdentityFile /home/user/.ssh/github-rsa
ForwardX11 no
W tym przykładzie instalacji digitaloceanbox
i github
i github.com
tak, że możemy wykonać następujące polecenia:
ssh github
ssh digitaloceanbox
Jeśli chcemy zalogować się jako inny użytkownik niż ten określony w pliku konfiguracyjnym, umieszczamy user@
na początku:
Generowanie ssh
kluczy
ssh-keygen -t rsa -b 4096 -C user@homemachine
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): /home/user/.ssh/digitalocean-rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/digitalocean-rsa
Your public key has been saved in /home/user/.ssh/digitalocean-rsa.pub.
The key fingerprint is:
SHA256:p9PYE/tveF2n//bLbp3ogYDtMtYEC5ziQiPxeob6fbo user@homemachine
Zauważ, że podałem pełną ścieżkę klucza prywatnego, który chcę wygenerować po wyświetleniu monitu ssh-keygen
. Zdefiniowałem również komentarz ( -C
), który pozwala mi łatwo identyfikować klucze na zdalnych komputerach.
Spowoduje to utworzenie dwóch plików:
.ssh/digitalocean-rsa
- Klucz prywatny . Nigdy tego nie udostępniaj .
.ssh/digitalocean-rsa.pub
- Klucz publiczny. To jest to, co przechowujesz na serwerze w celu uwierzytelnienia.
Podając ssh
klucz, upewnij się, że jest to .pub
wersja !! Kiedy dodajesz do swojego ~/.ssh/config
, pamiętaj, aby dodać poprawny klucz prywatny, który odpowiada kluczowi publicznemu dodanemu do systemu.
Konfiguracja serwera
Większość instalacji będzie miała włączone uwierzytelnianie klucza publicznego. Jeśli jednak zaczniesz robić wszystko, co nie chce, możesz napotkać kilka problemów. W przypadku, gdy OP ma problem, zalecam, aby OP usunął /root/.ssh/
katalog, aby zacząć od nowa.
Nie jest zalecane używanie ssh
dostępu do użytkownika root w systemie zdalnym. Zalecane jest przejście ssh
do innego użytkownika, a następnie eskalacja do rootowania przy użyciu hasła ( sudo su -
).
Dodaj klucze do hosta za pomocą ssh-copy-id
Bez względu na to, czy zdecydujesz się utworzyć innego użytkownika i używać go ssh
jako tego użytkownika, czy użytkownika root, zalecany sposób umieszczania ssh
kluczy na serwerze to:
ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
Pozwala sshd
to utworzyć potrzebny katalog i pliki z niezbędnymi uprawnieniami. Oznacza to, że nie ma szans na zepsucie uprawnień lub konieczność zapamiętania szczegółów. Wystarczy użyć narzędzia, aby przesłać klucze.
Wyłącz uwierzytelnianie hasła
Biorąc to pod uwagę, po samodzielnym wprowadzeniu klucza i upewnieniu się, że można połączyć się za pomocą kluczy, zaleca się wyłączenie uwierzytelniania hasła sshd
i ponowne uruchomienie usługi:
- Edytować
/etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
Co z nowymi użytkownikami?
Jeśli wyłączysz uwierzytelnianie hasła, w jaki sposób możesz wprowadzić nowych użytkowników? Jednym ze sposobów jest dodanie plików szablonów do /etc/skel
katalogu. Po przypisaniu jednego użytkownika wykonaj następujące czynności:
sudo cp -r .ssh/ /etc/skel/
ls /etc/skel/.ssh
- Edytuj wszystkie znalezione pliki
/etc/skel/.ssh/
, aby były puste, chyba że chcesz automatycznie wpisywać się dla każdego nowo utworzonego użytkownika.
Gdy tworzysz nowych użytkowników sudo useradd -m newuser
, użytkownik ten będzie miał uprawnienia do .ssh/authorized_keys
edycji i odpowiednie uprawnienia.
Debugowanie
Możesz obejrzeć sshd
plik dziennika, aby zobaczyć, dlaczego połączenia się nie udają lub zostają odrzucone:
sudo tail -f /var/log/auth.log
Podczas uruchamiania tego polecenia użyj innego terminala, aby spróbować się zalogować. Wiele razy dostarczone wiadomości są wystarczająco dobre, aby pomóc zlokalizować problem lub znaleźć rozwiązanie online.