Bash Dateitransfer mit scp und sshpass funktioniert nicht

Woodz

Lieutenant
Registriert
Apr. 2009
Beiträge
689
Hallo.

Ich versuche eine Datei automatisch von einem Server auf einen anderen Server mittels scp zu übertragen. Damit bei der anfallenden Passwortabfrage das Passwort übergeben wird nutze ich sshpass:

sshpass -p 'passwort' scp -v -i .ssh/id_20220224 data.tar.gz user@webseite.de:/data.tar.gz

Wenn ich den Befehl so eingebe, bleibt der Vorgang, wie im Bild zu sehen, einfach stehen.
2.jpg



gebe ich allerdings den Befehl ohne sshpass ein, wird wie gewohnt nach dem Passwort gefragt und danach der Transfer gestartet.

scp -v -i .ssh/id_20220224 data.tar.gz user@webseite.de:/data.tar.gz

1.jpg


Ich habe auch schon einen neuen key erstellt und die Firewall geprüft. Alles ohne Erfolg.

Ich hoffe Ihr könnt mit den spärlichen Infos was anfangen.

beste Grüße
 
Hab sshpass noch nie benutzt, aber nach meinem Verständnis ist es für die reine Passwort Authentifizierung. Was du aber machst ist eine Key Authentifizierung und das Passwort für den Key wird abgefragt.

Benutze einfach einen Key ohne Passwort, dann sollte es ohne sshpass klappen. Ob du nun einen Key ohne Passwort nutzt oder einen Key mit Passwort aber das Passwort im Klartext in irgend ein Skript schreibst ist ja völlig egal.

Alternativ mal ssh-agent anschauen.
 
  • Gefällt mir
Reaktionen: up.whatever, sandreas und chris221177
Bei der Verwendung von ssh-agent muss für scp das forwarding des agents erlaubt werden. Option -A
 
Probier mal, ob das geht:
sshpass -P "passphrase" scp -v -i .ssh/id_20220224 data.tar.gz user@webseite.de:/data.tar.gz

Falls nicht: Wie oben schon beschrieben solltest du nicht versuchen, den Kopiervorgang zu automatisieren, in dem du einen Key mit Passphrase erstellst. Falls das dein Standard-Key ist und du den nicht ändern kannst, erzeuge einfach einen neuen ohne Passphrase und nutze den.


Letzte Möglichkeit: Nutze expect:

https://www.clug.de/vortraege/expect/expect.html
https://linux.die.net/man/1/expect
 
Ok.

Hab jetzt einen key ohne passwort erstellt und das funktioniert.
Der Key liegt dann aber unverschlüsselt vor, wenn ich ihn ohne Passwort erstelle, richtig?

gruß
 
Woodz schrieb:
Der Key liegt dann aber unverschlüsselt vor, wenn ich ihn ohne Passwort erstelle, richtig?
Der Private-Key liegt immer unverschlüsselt vor. Aber nur auf dem Rechner, wo du ihn benutzt, das ist ja der Sinn der Sache. Du hängst deinen Private-Key ja nicht ans schwarze Brett :-)

Du schickst dem Server NUR deinen Public Key und er schickt dir einen damit verschlüsselten Sitzungsschlüssel, den nur du entschlüsseln kannst, weil du den Private Key hast.

Grober Ablauf (stark vereinfacht):
  • Du: Hey Server, ich möchte mich gerne Authentifizieren, hier ist mein Public Key
  • Server: Hier bitte, eine SitzungsID mit deinem Public-Key verschlüsselt und MEIN eigener Public key
  • Du: Ok, ich entschlüssle mit meinem Private Key die SitzungsID - hier, bitte, zur Verfikation deine SitzungsID mit deinem Public Key verschlüsselt
  • Server: Ok, ich entschlüssle - Ok, alles klar, du bist angemeldet, wir verschlüsseln jetzt den Transfer mit der SitzungsID als Schlüssel

Also ist es völlig ok, dass du deinen Key unverschlüsselt auf der Platte hast, solange niemand anders mit root-Rechten auf dem Rechner rumturnt, der es nicht sollte.
 
Zurück
Oben