How to pass password zu scp?
-
09-06-2019 - |
Frage
Ich weiß, es ist nicht empfohlen, aber ist es überhaupt möglich, zu übergeben, das Kennwort des Benutzers scp?
Ich möchte eine Datei kopieren über scp als Teil eines batch-Jobs und der empfangende server das tut, natürlich, müssen Sie ein Kennwort und, Nein, ich kann nicht einfach ändern, der key-basierte Authentifizierung.
Andere Tipps
Verwenden sshpass:
sshpass -p "password" scp -r user@example.com:/some/remote/path /some/local/path
oder so das Passwort nicht in der bash-history
sshpass -f "/path/to/passwordfile" scp -r user@example.com:/some/remote/path /some/local/path
Die oben genannten Kopien Inhalte der Pfad aus der remote-host zu Ihrem lokalen.
Installieren :
- ubuntu/debian
apt install sshpass
- centos/fedora
yum install sshpass
- mac w/ macports
port install sshpass
- mac w/ brew
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
generieren Sie einfach einen ssh-Schlüssel wie:
ssh-keygen -t rsa -C "your_email@youremail.com"
kopieren Sie den Inhalt von ~/.ssh/id_rsa.pub
und schließlich fügen Sie die remote-Maschinen ~/.ssh/authorized_keys
stellen Sie sicher, dass die remote-Maschine müssen Sie die Berechtigungen 0700 for ~./ssh folder
und 0600 for ~/.ssh/authorized_keys
Wenn Sie eine Verbindung mit dem server von Windows, die Putty-version von scp ("pscp") können Sie das Passwort weitergeben, die mit der -pw
parameter.
Sie können über den "rechnen" - Skript auf unix/terminal
Zum Beispiel erstellen 'test.exp' :
#!/usr/bin/expect
spawn scp /usr/bin/file.txt root@<ServerLocation>:/home
set pass "Your_Password"
expect {
password: {send "$pass\r"; exp_continue}
}
führen Sie das Skript
expect test.exp
Ich hoffe, das hilft.
curl kann verwendet werden als eine alternative zu scp-kopieren einer Datei, und es unterstützt einen Passwort auf der Kommandozeile.
curl --insecure --user username:password -T /path/to/sourcefile sftp://desthost/path/
Hier ist ein Beispiel, wie Sie es tun 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;
}
Niemand erwähnte es, aber Putty scp (pscp) hat eine pw-option für Passwort.
Dokumentation können gefunden werden hier: https://the.earth.li/~sgtatham/putty/0.67/htmldoc/5.html#pscp
stellen Sie sicher, dass Sie "erwarten" tool vor, wenn nicht, tun Sie es
# apt-get install expect
erstellen Sie eine Skriptdatei mit folgendem Inhalt.(# vi /root/file)
spawn scp /path_from/file_name user_name_here@to_host_name:/path_to
expect "password:"
send put_password_here\n;
interact
ausführen der Skript-Datei mit "rechnen" - tool
# expect /root/scriptfile
Sobald Sie die Einrichtung ssh-keygen
wie oben erklärt, die Sie tun können
scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/
Wenn Sie möchten, vermindern Sie die Eingabe jedes mal, Sie können ändern Sie Ihre .bash_profile
Datei und legen
alias remote_scp='scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/
Dann vom terminal aus tun source ~/.bash_profile
.Danach, wenn Sie geben remote_scp
in Ihrem terminal ausführen soll, die scp
Befehl ohne Passwort.
Sie können verwenden ssh-copy-id
hinzufügen des ssh-Schlüssels:
$which ssh-copy-id #check whether it exists
Wenn vorhanden:
ssh-copy-id "user@remote-system"
Eine alternative wäre es, fügen Sie die öffentliche Hälfte des Benutzers-Taste, um die authorized-keys-Datei auf dem Zielsystem.Auf dem system, das Sie initiieren der übertragung aus, und führen Sie einen ssh-agent-daemon und fügen Sie den privaten Hälfte des Schlüssels zu der agent.Der batch-Auftrag kann dann so konfiguriert werden, dass der agent den privaten Schlüssel bekommen, anstatt eine Bestätigung für die Schlüssel Passwort.
Dieses sollten Sie tun-können auf einem UNIX/Linux-system oder auf die Windows-Plattform, mit Festzug und pscp.
Schritte, um sshpass Für rhel/centos 6 :
# wget http://epel.mirror.net.in/epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm
# yum install sshpass
Ich fand diese wirklich hilfreiche Antwort hier.
rsync -r -v --progress -e ssh user@remote-system:/address/to/remote/file /home/user/
Nicht nur Sie übergeben können, da Sie das Kennwort ein, aber es wird auch zeigen die Fortschrittsanzeige beim kopieren.Wirklich genial.