Wie verwende ich scp in einem Bash-Skript, ohne ein Passwort anzugeben?

Ich bin ein Bash-Neuling und schreibe ein Bash-Skript, das die Übertragung von Dateien zwischen zwei Computern ermöglicht. Übrigens, gibt es eine sicherere Alternative zu scp?

Derzeit mache ich dies manuell mit scp. Der Remote-Server fordert mich immer nach dem Passwort auf, und ich gebe das an. Ich möchte dies automatisieren (daher das Bash-Skript). Ich möchte mein Passwort jedoch nicht im Klartext angeben (oder wenn überhaupt - ich hatte den Eindruck, dass Open SSL davon abhält passwörter und verwendet Zertifikate etc?).

Kann jemand bitte erklären, wie ich meinen aktuellen Prozess automatisieren kann, ohne mein Passwort explizit anzuzeigen?

Ich laufe auf Ubuntu 10.0.4

Author: morpheous, 2010-07-30

3 answers

Um sich ohne Passwort anzumelden, müssen Sie die schlüsselbasierte Authentifizierung einrichten. Es gibt eine Reihe von Tutorials - Dieser sieht aus wie ein guter Anfang (bearbeiten: Die ursprüngliche Site ist aus dem Internet gefallen, dieser Link ist auf die letzte Kopie, die von der WayBackMachine archiviert wurde).

Wenn Sie eine Passphrase auf Ihren Schlüssel setzen (empfohlen), müssen Sie dies beim Anmelden noch angeben, aber Sie können ssh-agent verwenden, um die Häufigkeit zu reduzieren, mit der Sie ihn bereitstellen müssen.

Wenn Sie benötigen skripte, die SSH / SCP verwenden, um unbeaufsichtigt auszuführen, müssen Sie keine Passphrase auf Ihrem Schlüssel haben, aber in diesem Fall müssen Sie diese Schlüsseldatei unbedingt so sicher halten, dass niemand sie sonst lesen kann Sie können sich auf diesem Server wie Sie ohne Passwort/Passphrase authentifizieren.

 7
Author: David Spillett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-03-29 15:44:13

Geben Sie ein Passwort an scp

Das Weiterleiten Ihres Passworts an die Standardeingabe von scp funktioniert nicht:

echo "password" | scp file user@host:/dir/to/copy/to

Weil scp aus Sicherheitsgründen nicht aus der Standardeingabe liest.

Verwenden Sie stattdessen das Tool sshpass:

Möglicherweise müssen Sie sshpass als root installieren, da es nicht Standard ist.

sshpass -p 'mypassword' scp -r [email protected]:/home/a/moo.txt /home/b/bar.txt
 0
Author: Eric Leschinski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-12-12 04:28:27

Wenn Sie einen Schlüssel wie.pem usw. (damit Sie kein Passwort haben müssten) könnten Sie Folgendes verwenden

Hier ist Bash-Code für SCP mit a.pem-Schlüsseldatei. Speichern Sie es einfach in a script.sh datei dann mit 'sh script.sh"

, Genießen

#!/bin/bash
#Error function
function die(){
echo "$1"
exit 1
}

Host=ec2-53-298-45-63.us-west-1.compute.amazonaws.com
User=ubuntu
#Directory at sent destination
SendDirectory=scp
#File to send at host
FileName=filetosend.txt
#Key file
Key=MyKeyFile.pem

echo "Aperture in Process...";

scp -i $Key $FileName $User@$Host:$SendDirectory || \
die "@@@@@@@Houston we have problem"

echo "########Aperture Complete#########";
 0
Author: Chief_Arbiter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-04-04 03:58:24