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
.