Frage: Mir wurde die Aufgabe zugewiesen, Dateiübertragungen zwischen Remote-Computern mit scp zu automatisieren. Aber ich bin mir nicht sicher, wie ich das Passwort als Parameter für scp angeben soll Befehl. Einer meiner Freunde schlug vor, "sshpass" zu verwenden ‘-Befehl (er kann ein Passwort als Argument verwenden), aber mein Chef sagt:„sshpass ist nicht der richtige Weg, dies zu tun, und es ist nicht sicher “. Was schlagen Sie vor?
– Ravi
Antwort:
Ravi, dein Freund hat die Antwort auf deine Frage, aber dein Chef hat recht . ‘sshpass ‘ Das Dienstprogramm verwendet ein Passwort als Argument, ist aber weniger sicher. Verwenden Sie stattdessen SSH-Schlüssel für sichere Dateiübertragungen.
Lassen Sie uns beide Methoden ausprobieren und sehen, welche sicherer ist.
Mit sshpass
Installieren Sie 'sshpass ‘ mit dem folgenden Befehl:
$ yum install sshpass Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package sshpass.x86_64 0:1.05-1.el5 set to be updated --> Finished Dependency Resolution
Nach der Installation können Sie es wie folgt verwenden:
sshpass -p "password" scp file.txt user@remote_machine:
Achtung: Da das Passwort im Befehl erwähnt wird, kann es von anderen Benutzern angezeigt werden, die mit „w am Computer angemeldet sind ' Befehl. Um dies zu verhindern, können Sie das Passwort in einer Datei speichern und die Datei als Argument an den Befehl übergeben (siehe unten):
$ echo "password" > passfile.txt
$ chmod 600 passfile.txt
$ sshpass -f passfile.txt scp file.txt user@remote_machine:
Achtung: Das Passwort kann weiterhin aus den Protokolldateien oder dem Verlauf nachvollzogen werden.
Das Fazit lautet also:„sshpass“ ist keine sichere Methode . Stattdessen sollten Sie, wie Ihr Chef vorgeschlagen hat, sichere SSH-Schlüssel für passwortlose Verbindungen verwenden.
Sichere SSH-Schlüssel verwenden
Generieren Sie SSH-Schlüssel auf dem Quellcomputer wie folgt:
[machine-A ]$ ssh-keygen -t rsa
[machine-A ]$ scp ~/.ssh/id_rsa.pub user@machine-B:.ssh/authorized_keys
Das war’s, Sie haben eine passwortlose SSH-Verbindung zwischen Maschine A und Maschine B eingerichtet. Versuchen Sie, Dateien zu übertragen, ohne das Passwort eingeben zu müssen:
$ scp file.txt user@remote_machine:
Erledigt! Ravi, manchmal haben BOSSES recht 🙂