Konfiguracja klienta
Ustawiać ~/.ssh/config
Konfigurowanie wpisów hosta sshjest 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 digitaloceanboxi githubi github.comtak, ż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 sshkluczy
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 sshklucz, upewnij się, że jest to .pubwersja !! 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 sshdostępu do użytkownika root w systemie zdalnym. Zalecane jest przejście sshdo 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 sshjako tego użytkownika, czy użytkownika root, zalecany sposób umieszczania sshkluczy na serwerze to:
ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
Pozwala sshdto 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 sshdi 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/skelkatalogu. 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_keysedycji i odpowiednie uprawnienia.
Debugowanie
Możesz obejrzeć sshdplik 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.