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 als Teil eines Stapeljobs über scp kopieren, und der empfangende Server benötigt natürlich ein Kennwort, und nein, ich kann das nicht einfach in eine schlüsselbasierte Authentifizierung ändern.
linux
scp
io-redirection
Argelbargel
quelle
quelle
Antworten:
Sie können Skript es mit einem Tool wie Expect (es gibt praktisch Bindungen auch, wie Pexpect für Python).
quelle
Verwenden Sie sshpass :
oder so wird das Passwort nicht im Bash-Verlauf angezeigt
Das obige kopiert den Inhalt des Pfads vom Remote-Host zu Ihrem lokalen.
Installieren :
apt install sshpass
yum install sshpass
port install sshpass
brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
quelle
apt-get install sshpass
yum -y install sshpass
sshpass -f
passwdfile` scp [...]. This way, the password won't show up in
ps` Inserate etc. und Sie können das Passwort mit Dateiberechtigungen schützen.Generieren Sie einfach einen SSH-Schlüssel wie:
Kopieren Sie den Inhalt von
~/.ssh/id_rsa.pub
und fügen Sie ihn zuletzt zu den Remotecomputern hinzu~/.ssh/authorized_keys
Stellen Sie sicher, dass der Remote-Computer über die Berechtigungen
0700 for ~./ssh folder
und verfügt0600 for ~/.ssh/authorized_keys
quelle
ssh-copy-id -i ~/.ssh/id_rsa.pub <remote_server>
um den Schlüssel auf dem Remote-Server zu kopierenWenn Sie von Windows aus eine Verbindung zum Server herstellen, können Sie mit der Putty-Version von scp ("pscp") das Kennwort mit dem
-pw
Parameter übergeben.Dies wird in der Dokumentation hier erwähnt.
quelle
pscp -pw 'MyPa$$word' username@servername:/somedir/somefile ~/somedest
(Ich hasse es, Kitt wie diesen zu verwenden, aber es funktioniert)curl kann als Alternative zu scp zum Kopieren einer Datei verwendet werden und unterstützt ein Kennwort in der Befehlszeile.
quelle
scp
muss mehr als 30 Sekunden warten, damit ich ein Passwort eingeben kann, hat abercurl
sofort funktioniert.Sie können das Skript "erwarten" unter Unix / Terminal verwenden
Erstellen Sie zum Beispiel 'test.exp':
Führen Sie das Skript aus
Ich hoffe das hilft.
quelle
Hier ist ein Beispiel, wie Sie es mit dem
expect
Tool machen:quelle
Niemand hat es erwähnt, aber Putty scp (pscp) hat eine -pw-Option für das Passwort.
Die Dokumentation finden Sie hier: https://the.earth.li/~sgtatham/putty/0.67/htmldoc/Chapter5.html#pscp
quelle
Sie können verwenden
ssh-copy-id
, um den SSH-Schlüssel hinzuzufügen:Wenn vorhanden:
quelle
Sobald Sie
ssh-keygen
wie oben beschrieben eingerichtet haben, können Sie dies tunscp -i ~/.ssh/id_rsa /local/path/to/file [email protected]:/path/in/remote/server/
Wenn Sie die Eingabe jedes Mal verringern möchten, können Sie Ihre
.bash_profile
Datei ändern und einfügenDann von Ihrem Terminal aus tun
source ~/.bash_profile
. Wenn Sie anschließendremote_scp
Ihr Terminalscp
eingeben, sollte der Befehl ohne Kennwort ausgeführt werden.quelle
Stellen Sie sicher, dass Sie das Tool "Erwarten" haben, wenn nicht, tun Sie es
# apt-get install expect
Erstellen Sie eine Skriptdatei mit folgendem Inhalt. (# vi / root / scriptfile)
spawn scp /path_from/file_name user_name_here@to_host_name:/path_to
expect "password:"
send put_password_here\n;
interact
Führen Sie die Skriptdatei mit dem Tool "erwarten" aus
# expect /root/scriptfile
quelle
Hier ist das Linux / Python / Expect-ähnliche Beispiel eines armen Mannes, das auf diesem Blog-Beitrag basiert: Upgrade einfacher Shells auf vollständig interaktive TTYs . Ich brauchte dies für alte Maschinen, auf denen ich Expect nicht installieren oder Python keine Module hinzufügen kann.
Code:
Ausgabe:
quelle
Eine Alternative wäre, die öffentliche Hälfte des Benutzerschlüssels zur Datei mit den autorisierten Schlüsseln auf dem Zielsystem hinzuzufügen. Auf dem System, von dem aus Sie die Übertragung initiieren, können Sie einen ssh-agent-Daemon ausführen und dem Agenten die private Hälfte des Schlüssels hinzufügen. Der Stapeljob kann dann so konfiguriert werden, dass der Agent den privaten Schlüssel abruft, anstatt nach dem Kennwort des Schlüssels zu fragen.
Dies sollte entweder auf einem UNIX / Linux-System oder auf einer Windows-Plattform mit pageant und pscp möglich sein.
quelle
Alle oben genannten Lösungen können nur funktionieren, wenn Sie die App installiert haben oder die Administratorrechte für die Installation außer oder sshpass haben sollten.
Ich fand diesen sehr nützlichen Link, um den scp einfach im Hintergrund zu starten.
https://charmyin.github.io/scp/2014/10/07/run-scp-in-background/
quelle
schritte um sshpass zu bekommen Für rhel / centos 6:
Quelle: https://community.mapr.com/thread/9040
quelle
Ich fand diese wirklich hilfreiche Antwort hier .
Sie können dort nicht nur das Passwort übergeben, sondern auch den Fortschrittsbalken beim Kopieren anzeigen. Wirklich großartig.
quelle