Logowanie po SSH bez hasła

2008-11-12 , Papiewski Łukasz , Linux / Unix / OS

Metoda kluczy użyteczna m.in:
  • Gdy korzystamy z kilku serwerów i jesteśmy zmęczeni ciągłym wpisywaniem hasła.
  • Gdy korzystamy z autossh, który dzięki połączeniu z kluczami publicznymi będzie w pełni automatycznie wznawiał połączenie.
Musimy się upewnić że mamy klucz prywatny i komplementarny publiczny w katalogu $HOME/.ssh. Używamy do tego ssh-keygen dostępnego wraz z programem OpenSSH.
[papi ~]$ ssh-keygen -t rsa 
Generating public/private rsa key pair. 
Enter file in which to save the key (/home/papi/.ssh/id_rsa):  
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:
Your identification has been saved in /home/papi/.ssh/id_rsa.
Your public key has been saved in /home/papi/.ssh/id_rsa.pub. 
The key fingerprint is: b4:76:3c:3a:3a:df:29:7c:ac:95:7b:1b:69:5d:5f:13 
papi@dune The key's randomart image is:
 
+--[ RSA 2048]----+ |
                 | 
|                 | 
|        .      E | 
|       . o      .| 
|        S +    .o| 
|       . o o o .+| 
|       .o.o + . .| 
|      ..o+o+..   | 
|      .oo++...   | 
+-----------------+ 
[papi ~]$

Wygenerował nam się klucz prywatny id_rsa oraz publiczny id_rsa.pub. Nie podajemy 'passphrese' bo inaczej trzeba ją będzie wpisywać przy każdym połączeniu. Należy mieć na uwadze, że klucz prywatny jest naszym hasłem do maszyny zdalnej, należy go chronić (chmod 400).

Następnym krokiem jest umieszczenie klucza publicznego na zdalnym koncie, do którego chcemy się logować bez hasła, koniecznie w folderze $HOME/.ssh w pliku authorized_keys

[papi ~]$ scp ~/.ssh/id_rsa.pub papi@mainframe:~/.ssh/authorized_keys 
papi@mainframe's password: ************************  
id_rsa.pub                                       100%  391     0.4KB/s   00:00    
[papi ~]$ ssh papi@mainframe 
Last login: Wed Nov 12 01:14:26 2008 from dune
papi@mainframe ~ $
Szybko, fajnie i wygodnie (mniej bezpiecznie ?)

Podsumowanie:

#jeśli jeszcze nie mamy klucza
ssh-keygen -t rsa
#gdy nie ma pliku authorized_keys
scp ~/.ssh/id_rsa.pub you@yourhost:~/.ssh/authorized_keys
#gdy dodajemy inny klucz publiczny
cat ~/.ssh/id_rsa.pub  | ssh user@host "echo `cat -` >> ~/.ssh/authorized_keys"
#przy użyciu ssh-copy-id
[papi ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub papi@turnip
papi@turnip's password: *******************
Now try logging into the machine, with "ssh 'papi@turnip'", and check in:
 
  .ssh/authorized_keys
 
to make sure we haven't added extra keys that you weren't expecting.

Cytaty

- Simplicity is the ultimate sophistication. - Leonardo da Vinci,
- Popularny człowiek wzbudza zawiść potężnych - Thufir Hawat o Leto Atrydzie (na Kaladanie),
- Szczęście następuje po smutku, a smutek po szczęściu; człowiek jest naprawdę wolny, gdy przestaje rozróżniać między smutkiem a szczęściem, między dobrem a złem - Aforyzmy buddyjskie.