scp (sichere Kopie) zur ec2-Instanz ohne Passwort


404

Ich habe eine EC2-Instanz ausgeführt (FreeBSD 9 AMI ami-8cce3fe5) und kann mit meiner von Amazon erstellten Schlüsseldatei ohne Kennwortabfrage problemlos darauf zugreifen.

Wenn ich jedoch eine Datei mit scp in die Instanz kopieren möchte, werde ich aufgefordert, ein Kennwort einzugeben:

scp somefile.txt -i mykey.pem root@my.ec2.id.amazonaws.com:/

Password:

Irgendwelche Ideen, warum dies geschieht / wie es verhindert werden kann?


Verwenden Sie für Benutzer und Host genau dieselbe Kennung?
Lynch

Ich bin mir nicht sicher, ob ich verstehe, was Sie unter Kennung verstehen. Können Sie das erklären?
Hoff

Wenn Sie für eine Verbindung eine IP-Adresse und für die andere einen Namen verwenden, funktioniert dies nicht. Ich habe gerade gesehen, dass Sie die -iOption verwenden, um Ihre Identität anzugeben. Möglicherweise sollten Sie auch den Befehl anzeigen, mit dem Sie sich mit ssh anmelden.
Lynch

danke lynch, habe es herausgefunden!
Hoff

Antworten:


804

Ich habe es herausgefunden. Ich hatte die Argumente in der falschen Reihenfolge. Das funktioniert:

scp -i mykey.pem somefile.txt root@my.ec2.id.amazonaws.com:/

14
Wenn Sie wissen, wie Sie über ssh eine Verbindung zu ec2 herstellen können, ändern Sie einfach den sshBefehl in scpund fügen Sie die Namensdatei nach der PEM-Datei hinzu.
Claudio Santos

11
Da diese Antwort etwas alt ist, ein neueres Beispiel aus meiner neuen EC2-Instanz: scp -i kp1.pem ./file.txt ec2-user@1.2.3.4: / home / ec2-user
siliconrockstar

1
@siliconrockstar Ihre Aussage kann ec2-user@1.2.3.4:/home/ec2-userleicht durch die kürzere und einfachere ec2-user@1.2.3.4:./ ./FTW ersetzt werden!
Brock

2
Ein sehr später Kommentar, aber was @ClaudioSantos vorschlägt, funktioniert nicht genau, wenn Sie einen nicht standardmäßigen Port verwenden. Es ist -p für ssh und -P für scp.
Inukshuk

1
Ich kann meine * .PEM-Datei verwenden, um in ec2 zu ssh. Wenn ich es jedoch zum SCP einer Datei verwenden möchte, wird der Fehler "Berechtigung verweigert" angezeigt. Wie kann ich das lösen?
AleX_

58
scp -i /path/to/your/.pemkey -r /copy/from/path user@server:/copy/to/path

Der Parameter (-r) ist nicht erforderlich, muss jedoch (/) vom Ende des Remote-Pfads entfernt werden. Ihr Beispiel hat für mich funktioniert. Vielen Dank
Abbas

35

Ich habe den folgenden Befehl verwendet, um von lokalem Linux Centos 7 nach AWS EC2 zu kopieren.

scp -i user_key.pem file.txt ec2-user@my.ec2.id.amazonaws.com:/home/ec2-user


19
scp -i ~/.ssh/key.pem ec2-user@ip:/home/ec2-user/file-to-copy.txt .

Der Dateiname sollte nicht zwischen der PEM-Datei und der ec2-Benutzerzeichenfolge liegen - das funktioniert nicht. Auf diese Weise können Sie auch den Namen der kopierten Datei reservieren.


14

Kopieren Sie eine Datei von einem lokalen Server auf einen Remote-Server

sudo scp -i my-pem-file.pem ./source/test.txt ec2-user@1.2.3.4:~/destination/

Kopieren Sie eine Datei von einem Remote-Server auf einen lokalen Computer

sudo scp -i my-pem-file.pem ec2-user@1.2.3.4:~/source/of/remote/test.txt ./where/to/put

Die grundlegende Syntax lautet also:

scp -i my-pem-file.pem username@source:/location/to/file username@destination:/where/to/put

-iist für die Identitätsdatei


8

Nehmen wir an, dass sich Ihre PEM-Datei und die Datei somefile.txt, die Sie senden möchten, im Ordner Downloads befinden

scp -i ~/Downloads/mykey.pem ~/Downloads/somefile.txt root@my.ec2.id.amazonaws.com:~/

Lass es mich wissen, wenn es nicht funktioniert


scp -i /Users/Username/Downloads/myfile.pem -r ubuntu@my.ect.id.amazonaws.com: ~ / ~ / Desktop / für den Fall, dass Sie Dateien vom Server zum lokalen übertragen
möchten

2
Danke, ich habe :/am Ende "Zugang verweigert" bekommen, aber :~/damit funktioniert es
Kardamom

Ja, weil: / ist Root-Ordner und: ~ / ist Benutzerordner. Wenn Sie also Root-Benutzer sind, dann: / oder: ~ / alles funktioniert und wenn Sie kein Root-Benutzer sind, dann nur: ~ / müssen Sie verwenden.
Yatender Singh

3

scp -i /home/barkat/Downloads/LamppServer.pem lampp_x64_12.04.tar.gz

Das wird euch allen sehr hilfreich sein


2

Meine hadoopec2cluster.pemDatei war die einzige im Verzeichnis auf meinem lokalen Mac, konnte sie nicht mit aws scp scp -i hadoopec2cluster.pem hadoopec2cluster.pem ubuntu@serverip:~.

Kopierte hadoopec2cluster.pem nach hadoopec2cluster_2.pem und dann scp -i hadoopec2cluster.pem hadoopec2cluster_2.pem ubuntu@serverip:~. Voila!


2

Ich wurde aufgehängt, weil ich meine öffentliche Schlüsseldatei in angegeben habe

scp -i [private key file path]

Als ich diesen Fehler bemerkte und ihn stattdessen in den Pfad des privaten Schlüssels änderte, war ich fertig.


2

In Ihrem Fall hat der Benutzer rootkeine Probleme. Stellen Sie jedoch in bestimmten Fällen, in denen Sie sich unter SSH als anderer Benutzer anmelden müssen, sicher, dass das Verzeichnis, das Sie verwenden, scpüber ausreichende Berechtigungen für den Benutzer verfügt, den Sie mit SSH bearbeiten.


1

Um PSCP verwenden zu können, benötigen Sie den privaten Schlüssel, den Sie beim Konvertieren Ihres privaten Schlüssels mit PuTTYgen generiert haben. Sie benötigen auch die öffentliche DNS-Adresse Ihrer Linux-Instanz

pscp -i C:\path\my-key-pair.ppk C:\path\Sample_file.txt ec2-user@public_dns:/home/ec2-user/Sample_file.txt

0

Schreiben Sie diesen Code

scp -r -o "ForwardAgent=yes" /Users/pengge/11.vim root@192.168.2.228:/root/

Wenn Sie einen SSH-Schlüssel mit Zugriff auf den Zielserver haben und der Quellserver nicht, können Sie Ihren SSH-Agenten durch Hinzufügen von -o "ForwardAgent = yes" an den Quellserver weiterleiten, damit er mit Ihrem SSH-Schlüssel eine Verbindung herstellen kann der Zielserver.


-6

Gerade getestet:

Führen Sie den folgenden Befehl aus:

sudo shred -u /etc/ssh/*_key /etc/ssh/*_key.pub

Dann:

  1. erstelle ami (bild des ec2).
  2. Start von neuem Ami (Bild) aus Schritt 2 wählte neue Schlüssel.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.