pass Passwort für den sftp in ein bash-script
Möchte ich automatisieren, um ein bash-Skript, dass eine Verbindung zum server Via sftp und nicht eine Datei übertragen. Ich habe das Passwort für diese, und zunächst habe ich versucht, für dieses
sftp $acc@$host << EOF
<passwd_here>
cd $dir
get $file
quit
EOF
aber es immer noch aufgefordert, das Kennwort zu, und ich musste ihn manuell eingeben, an der Eingabeaufforderung.
Nach der Suche SO, ich fand dieser Beitrag, die hatten eine Lösung mit expect
, die ich versucht und ich bekam die folgende Fehlermeldung:
Skript:
sftp -b cmdfile.txt $acc@$host
expect "Password:"
send "<passwd>\n";
interact
Fehler:
Permission denied (publickey,keyboard-interactive).
cmdfile.txt
cd $dir
get $file
quit
Bitte lassen Sie mich wissen, Wie die Verbindung mit dem Passwort in der bash-Skript?
- Besser
expect scripts
geschrieben werden können, aber ich würde vorschlagen, immer sshpass auf Ihrem client-Rechner. sshpass ist mehr gesichert und weniger fehleranfällig als sftp.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scp/sftp, die Sie verwenden sollten Schlüssel-basierte Authentifizierung. Öffentlichen Schlüssel des Benutzers, den Sie authentifizieren möchten, kopieren in ~/.ssh/authorized_keys-Datei auf dem server in das home-Verzeichnis des Benutzers, auf die Sie möchten, anmelden. Speichern von Passwort im Klartext auf der client-Seite ist keine gute Praxis, Sie wissen:), Dass so, wie Sie "workaround" problem zu Lesen das Passwort aus der Eingabeaufforderung auch.
Bitte versuchen Sie die folgenden Schritte
lftp
vor; dies ist eine sehr nützliche Lösung für diejenigen von uns, die nicht die Möglichkeit haben, die Einrichtung von SSH-keys. Danke.Ja key-based-auth ist der Weg zu gehen.
Überprüfen Sie hier für eine Richtung.