Logowanie SSH bez hasła

Logowanie SSH bez hasła za pomocą ssh-keygen i ssh-copy-id

Jeśli często korzystasz z połączeń SSH ze swoim serwerem to warto przyspieszyć łączenie się z nim. Dzięki poleceniu ssh-keygen wygenerujemy nasz klucz publiczny ssh a następnie poleceniem ssh-copy-id skopiujemy go na serwer. Po tych dwóch prostych operacjach będziemy mogli łączyć się z naszym serwerem bez użycia hasła.

W pierwszej kolejności generujemy klucz publiczny poleceniem ssh-keygen. Enterem potwierdzamy wszystkie pytania aż do uzyskania randomart image:

nayma@nayma:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/nayma/.ssh/id_rsa): 
Created directory '/home/nayma/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/nayma/.ssh/id_rsa.
Your public key has been saved in /home/nayma/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:PRNu1ccBBsb/K8EiS+J1MfMXL8iqaqPzkmK86aVRpvA naymaeu@naymaeu
The key's randomart image is:
+---[RSA 2048]----+
|          .o.o.. |
|          .... ..|
|          . o . o|
|         o * . o |
|.   o   S *.*.. o|
| o +   . = =o+.o.|
| .E ... + +.. o..|
|  +=+ o. ..  . . |
| o=o.*oo..    .  |
+----[SHA256]-----+

Instalujemy ssh-copy-id:

brew install ssh-copy-id

Następnie musimy skopiować nasz klucz na nasz serwer. Robimy to poleceniem ssh-copy-id -i ~/.ssh/id_rsa.pub uzytkownik@nazwahosta.pl. Jeśli wszystko wykonamy ok powinniśmy otrzymać informację, że 1 klucz został dodany poprawnie.

nayma@nayma:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub nayma@host.pl
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/nayma/.ssh/id_rsa.pub"
The authenticity of host 'nayma.host.pl (111.111.111.111)' can't be established.
ECDSA key fingerprint is SHA256:NWHqobYvpYndNQ3uSCwARoPy3u7q53pfLvjVUgPXMLU.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
naymaeu@host.pl's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh nayma@host.pl"
and check to make sure that only the key(s) you wanted were added.

Jak sam widzisz powyżej od teraz możemy używać polecenia ssh nayma@host.pl i nie musimy podawać hasła do logowania.

Szybkie aliasy

Tak naprawdę jeśli mamy wiele serwerów i dziennie łączymy się kilka razy zdalnie z serwerem przez SSH to warto zadbać o dorobienie aliasów, dzięki którym jeszcze łatwiej i szybciej wykonamy połączenie. Można to zrobić na dwa sposoby. Pierwszy to dodanie skrótu do pliku ./.ssh/config poniższego kodu:

Host nayma
 HostName host.pl
 User nayma

Mając zainstalowane OHMYZSH możemy również dodać alias do pliku konfiguracyjnego zsh .zshrc poniższy alias:

alias sshnayma="ssh nayma@host.pl"

UWAGA !! Pamiętamy, że alias musi być ciągiem znaków bez spacji. W innym przypadku alias nie będzie działać.

Chciałbym na koniec bardzo podziękować Tomaszowi Szulborskiemu z Atthost.pl za pomoc i podpowiedź jak korzystać z polecenia ssh-copy-id.