457 Stimmen

Wie wird das Passwort an scp übergeben?

Ich weiß, dass es nicht empfohlen wird, aber ist es überhaupt möglich, das Passwort des Benutzers an scp zu übergeben?

Ich möchte eine Datei per scp als Teil eines Batch-Jobs kopieren, und der empfangende Server benötigt natürlich ein Passwort, und nein, ich kann das nicht einfach auf eine schlüsselbasierte Authentifizierung umstellen.

25voto

Prabhjeet Punkte 231

Sie können das Skript "expect" unter Unix/Terminal verwenden

Zum Beispiel 'test.exp' erstellen:

#!/usr/bin/expect
        spawn scp  /usr/bin/file.txt root@<ServerLocation>:/home
        set pass "Your_Password"
        expect {
        password: {send "$pass\r"; exp_continue}
                  }

das Skript ausführen

expect test.exp 

Ich hoffe, das hilft.

11voto

Shen JI Punkte 89

Sie können verwenden ssh-copy-id um den ssh-Schlüssel hinzuzufügen:

$which ssh-copy-id #check whether it exists

Falls vorhanden:

ssh-copy-id  "user@remote-system"

9voto

Espo Punkte 40386

Hier ein Beispiel dafür, wie man es macht mit expect Werkzeug:

sub copyover {
    $scp = Expect->spawn("/usr/bin/scp ${srcpath}/$file $who:${destpath}/$file");
    $scp->expect(30,"ssword: ") || die "Never got password prompt from $dest:$!\n";
    print $scp 'password' . "\n";
    $scp->expect(30,"-re",'$\s') || die "Never got prompt from parent system:$!\n";
    $scp->soft_close();
    return;
}

7voto

galushka Punkte 89

Niemand hat es erwähnt, aber Putty scp (pscp) hat eine Option -pw für das Passwort.

Die Dokumentation ist hier zu finden: https://the.earth.li/~sgtatham/putty/0.67/htmldoc/Kapitel5.html#pscp

4voto

hi15 Punkte 1897

Sobald Sie die ssh-keygen wie oben erläutert, können Sie Folgendes tun

scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/

Wenn Sie sich die Tipparbeit sparen wollen, können Sie Ihre .bash_profile Datei und setzen

alias remote_scp='scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/

Führen Sie dann von Ihrem Terminal aus source ~/.bash_profile . Wenn Sie danach eingeben remote_scp in Ihrem Terminal sollte es die scp Befehl ohne Passwort.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X