Möchte man über ssh von einem Linux-Rechner auf einen anderen Linux-Rechner zugreifen, wird man immer nach dem User-Passwort gefragt.
Besonders störend ist diese Passwortabfrage, wenn man Verbindungen zwischen zwei Linux-Rechners automatisch herstellen möchte; z.B.: bei zeitgesteuerten Kopervorgängen.
Durch den Austausch von SSH-Keys kann man die Passwortabfrage umgehen.
Im folgenden Beispiel bestehen 2 Debian-Systeme: „Debian1“ und „Debian2“.
Es soll vom Rechner „Debian1“ auf „Debian2“ per ssh zugegriffen werden, ohne eine weitere Passwortabfrage.
Zuerst versuchen wir einen Zugriff via ssh um den Fingerprint zu übergeben.
1 2 3 4 5 6 |
user@debian1:~$ ssh user@debian2 The authenticity of host 'debian2 (172.16.28.1)' can't be established. ECDSA key fingerprint is ce:a0:6b:6e:55:b9:2d:d5:e9:14:f9:a6:f8:a8:34:36. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'debian2,172.16.28.1' (ECDSA) to the list of known hosts. user@debian2's password: |
Nach der Eingabe des richtigen Passworts wird der Server „Debian1“ in die „known_hosts“-Datei übernommen.
1 2 3 4 5 6 7 8 9 10 11 12 |
Linux debian2 3.2.0-4-686-pae #1 SMP Debian 3.2.51-1 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Mon Nov 4 19:38:56 2013 from 172.16.16.114 user@debian2:~$exit user@debian1:~$ |
Damit ist der Grundstock für eine ssh-Verbindung erzeugt.
Als nächster Schritt erzeugt man einen SSH-Key auf dem Rechner „Debian1“.
(Die Fragen können einfach mit Return bestätigt werden.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
user@debian1:~$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/user/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: fb:b8:49:4d:f4:cf:8b:2c:14:d9:a6:de:c9:5d:d8:a3 user@debian1 The key's randomart image is: +--[ RSA 2048]----+ | | | | | .o | | .o.o | | S .+. o | | +o o..o| | oo.o o+..| | . +o.+E.. | | +...o . | +-----------------+ user@debian1:~$ |
Wie oben zu lesen, sind die Key´s standardmäßig in „/home/<angegebener User>/.ssh/“ erzeugt worden.
Wir benötigen den Public-Key; in diesem Fall der id_rsa-pub
Dieser Public-Key muss nun auf den zweiten Linux-Rechner übertragen, und dem User, der angemeldet werden soll, zugeordnet werden.
Dies geht mit dem Befehl ssh-copy-id
Die Syntax lautet in diesem Fall
ssh-copy-id -i <Pfad zum Public-Key> <Loginuser@Loginrechner>
1 2 3 4 5 6 7 8 9 |
user@debian1:~$ ssh-copy-id -i /home/user/.ssh/id_rsa.pub user@debian2 user@debian2's password: Now try logging into the machine, with "ssh 'user@debian2'", and check in: ~/.ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. user@debian1:~$ |
Ein Test, ob die Übertragung erfolgreich war, kann man nun durch einen Login auf dem Rechner „Debian2“ überprüfen. Dort müsste jetzt im User-Verzeichnis ein Ordner .ssh angelegt worden sein mit einer Datei „authorized_keys“
1 2 3 |
user@debian2:~/.ssh$ cat /home/user/ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDkPJyBv1mhYPY8hnMyk7W9+1YNuAQ4J3vgeIZ0H7BN6wqRZNCSY0PIGCWA7chkgvyl+6Az74w0obhPpLNc5QAu1NOe/N9JTN6a/XIoCE2X9ZjV/bpFPufLaU1yybzps0n5GuzgEAk8gvBhxhqZLyLLliSTo/IFnQKc+nNYvJY/emlLL2KABhYfqg3KvAED/X/uej8edlrv+YzV9V2ZcEBI2rEjuXdGFhsqPPEbhSqX01jJl+Q0MvY3xtappI/FO6aapdJe2ZWT9F/+HcETio+31ZLtTRsQLSYZF/cbcFMgt5wXuoHDXSeAaTBY0TtIOnNw4QaSim3GsBtDMTY4pq7L user@debian1 user@debian2:~/.ssh$ |
Die zeigt, dass die Übertragung des SSH-Keys erfolgreich war.
Ein ssh-Login vom Rechner „Debian1“ auf den Rechner „Debian2“ sollte nun ohne Passwortabfrage möglich sein.
Der Beweis:
1 2 3 4 5 6 7 8 9 10 11 |
user@debian1:~$ ssh user@debian2 Linux debian2 3.2.0-4-686-pae #1 SMP Debian 3.2.51-1 i686 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Mon Nov 4 19:39:44 2013 from debian1 user@debian2:~$ |