Für Skripte, die man beispielsweise regelmäßig per Cronjob ausführt, um Dateien von einem Rechner auf einen anderen kopieren zu lassen, kann es etwas hinderlich sein, bei der Ausführung von SCP jedes mal manuell das Passwort einzugeben.
Man könnte die Passwortübergabe zwar in das Skript integrieren, doch dann wäre das Risiko gegeben, dass das Skript nach einer Passwortänderung nicht mehr funktioniert oder, dass neugierige Augen das Passwort in dem Skript ausspionieren.
Zusätzlich hat man dann den Vorteil bei einer SSH-Verbindung, das auch kein Passwort mehr benötigt wird.
Dazu sind folgende Schritte notwendig:
Auf dem Quell Rechner:
Zuerst müssen für den entsprechenden Benutzeraccount (dieser sollte möglichst nur die Rechte haben die er benötigt) die Schlüssel erstellt werden. Die wird mit folgendem Befehl gemacht:
code: |
1:
|
ssh-keygen -t dsa
|
|
Bei der Frage nach dem Passwort einfach [Enter] drücken (also leer lassen).
Jetzt werden im Verzeichnis „~/.ssh/“ die Dateien „id_dsa“ und „id_dsa.pub“ angelegt.
Nun müssen wir noch den öffentlichen Schlüssel (und NUR den) auf den Zielrechner per SCP kopieren:
code: |
1:
|
scp ./.ssh/id_dsa.pub meinBenutzerName@server2:~/public-key.tmp
|
|
Auf dem Ziel Rechner:
Zunächst loggen wir uns mit dem entsprechenden Benutzer ein. Dann erstellen wir das „.ssh“ Verzeichnis, sofern es noch nicht vorhanden ist und setzen die Verzeichnisrechte:
code: |
1:
2:
3:
|
mkdir .ssh
chmod 700 .ssh
|
|
Anschließend müssen wir unsere Datei „public-key.tmp“ am Ende der Datei „authorized_keys“ anhängen. Diese Datei enthält eine Liste sämtlicher öffentlicher Schlüssel von Rechnern, die sich ohne Passwort an unserem Account auf dem Zielrechner anmelden dürfen.
code: |
1:
|
cat ~/public-key.tmp>> ~./.ssh/authorized_keys
|
|
Nun sollte noch die Datei „public-key.tmp“ gelöscht werden:
code: |
1:
|
rm ~/public-key.tmp
|
|
Jetzt kann man Dateien unter dem entsprechenden Benutzer ohne Passworteingabe per SCP kopieren sowie sich per SSH einloggen.