In het bestand $HOME/.ssh/known_hosts op de server moet de ssh-rsa key van de client PC ook bekend zijn.
ff met password inloggen op de server, daarvandaan een ssh sessie naar de client starten en weer sluiten:
code:
1
2
3
4
5
| $ ssh client
The authenticity of host 'client (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'client' (RSA) to the list of known hosts. |
De key is dan toegevoegd.
Wanneer er bij het aanmaken van de key voor gekozen is om de private key te encoden door middel van een passphrase,
wordt niet meer om een username en password gevraagd, maar om de passphrase, om de private key
te kunnen ontcijferen, om daarmee vervolgend de challenge van de server te kunnen decrypten en terug sturen.
Met ssh-agent kun je die passphrases managen, zodat hier niet meer om wordt gevraagd.
Hiervoor moet ssh-agent worden gestart en de uitvoer ervan moet worden uitgevoerd:
code:
1
2
3
4
5
6
7
8
9
10
11
| $ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-XXiEM2aJ/agent.10868; export SSH_AUTH_SOCK;
SSH_AGENT_PID=10869; export SSH_AGENT_PID;
echo Agent pid 10869;
$ SSH_AUTH_SOCK=/tmp/ssh-XXiEM2aJ/agent.10868; export SSH_AUTH_SOCK;
$ SSH_AGENT_PID=10869; export SSH_AGENT_PID;
Dit kan gemakkelijker met:
$ eval `ssh-agent` |
met het proggie ssh-add kan de passphrase door ssh-agent worden beheerd:
code:
1
2
3
4
| $ ssh-add
Need passphrase for /home/user/.ssh/identity
Enter passphrase for /home/user/.ssh/identity <hier de passphrase invoeren>
Identity added: /home/user/.ssh/identity (/home/user/.ssh/identity) |
Nu kan er vervolgens een ssh sessie worden gestart of een scp commando worden gegeven, zonder dat een
password
noch een passphrase hoeft te worden opgegeven.
Als dit bij meerdere servers moet gebeuren, is het nu alleen nog een kwestie van de public key toe te voegen aan
het bestand $HOME/.ssh/known_hosts (of $HOME/.ssh/known_hosts2, afhankelijk van de gebruikte versie) te
worden toegevoegd. Dit kan als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| $ # Kopieer de public key naar de server
$ scp $HOME/.ssh/identity.pub user@server: # Let op de dubbelepunt
user@server's password:
identity 100% |*****************************| 951 00:00
$ ssh user@server
user@server's password:
user@server:~$ cat identity.pub >> .ssh/authorized_keys2 # Of zonder die 2 dus
user@server:~$ # Vervolgens nog even de host toevoegen aan known_hosts
user@server:~$ ssh client
The authenticity of host 'client (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'client' (RSA) to the list of known hosts. |
Far from being some stuffy science, writing regular expressions is closer to an art.