Verwenden Sie scp, um eine Datei in eine Amazon EC2-Instanz zu kopieren?

198

Ich versuche, mit meinem Mac Terminal eine Datei von Downloads (phpMyAdmin, die ich online heruntergeladen habe) auf meine Amazon EC2-Instanz zu scannen.

Der Befehl, den ich benutzte, war:

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz  [email protected]:~/.

Der Fehler, den ich bekam: Warnung: Identitätsdatei myAmazonKey.pem nicht zugänglich: Keine solche Datei oder kein solches Verzeichnis. Berechtigung verweigert (publickey). verlorene Verbindung

Sowohl meine myAmazonkey.pem als auch meine phpMyAdmin-3.4.5-all-language.tar.gz befinden sich in Downloads, also habe ich es versucht

scp -i /Users/Hello_Kitty22/Downloads/myAmazonKey.pem /Users/Hello_Kitty22/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  [email protected]:~/.

und der Fehler, den ich bekam: Warnung: Identitätsdatei /User/Hello_Kitty22/Downloads/myAmazonkey.pem nicht zugänglich: Keine solche Datei oder kein solches Verzeichnis. Berechtigung verweigert (publickey). verlorene Verbindung

Kann mir bitte jemand sagen, wie ich mein Problem beheben kann?

ps es gibt einen ähnlichen Beitrag: scp (sichere Kopie) zur ec2-Instanz ohne Passwort, aber es beantwortet meine Frage nicht.

HoKy22
quelle
Ich habe das Gefühl, wenn ich meine Amazon-Instanz online
starte

Antworten:

375

Versuchen Sie, den Benutzer anzugeben ec2-user, z

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz [email protected]:~/.

Siehe Herstellen einer Verbindung zu Linux / UNIX-Instanzen mit SSH .

WP McNeill
quelle
16
funktioniert super. Beachten Sie, dass Ihr Standardbenutzer möglicherweise "ubuntu" ist, wenn Sie eine Ubuntu-Instanz ausführen.
RussellStewart
Natürlich funktioniert das Kopieren nach / möglicherweise nicht. Danke für die Erleuchtung!
Dnuske
@DanielDropik Ich weiß nicht, ob Sie scherzen oder nicht ... aber ich :/würde versuchen, den Ordner in das Stammverzeichnis des Systems zu kopieren, was auf allen Computern Berechtigungsfehler verursachen würde, ohne sudo (oder als root) auszuführen.
Dobz
Warum heißt es? Bitte melden Sie sich als Benutzer "ubuntu" und nicht als Benutzer "root" an. Was ich für die Kopie tun muss
Arjun
In meinem Fall habe ich den Benutzer verwendet, aber der Unterschied ist, dass ich die öffentlichen DNS mec2-50-17-16-67.compute-1.amazonaws.com anstelle eines Domainnamens hinzufüge
shareef
31

Das zweite Verzeichnis ist Ihr Ziel. Verwenden Sie dort keinen Servernamen. Mit anderen Worten, Sie müssen den Computernamen für den Computer, auf dem Sie sich gerade befinden, nicht angeben.

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

-r wenn es ein Verzeichnis ist.

Syed Priom
quelle
19

Ihr Schlüssel darf nicht öffentlich sichtbar sein, damit SSH funktioniert. Verwenden Sie diesen Befehl bei Bedarf:

chmod 400 yourPublicKeyFile.pem
Castelmager
quelle
Du hast meinen
Tagesbruder
13

Sie sollten sich auf Ihrem lokalen Computer befinden, um den obigen Befehl scp auszuführen.

Versuchen Sie auf Ihrem lokalen Computer:

scp -i ~/Downloads/myAmazonKey.pem ~/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  [email protected]:~/.
DV Dasari
quelle
9

Hier sind die Details, was für eine EC2- Instanz funktioniert :

scp -i /path/to/whatever.pem /users/me/path-to-file [email protected]:~

Einige Anmerkungen für den Anfang:

  1. Beachten Sie die Leerzeichen zwischen den drei Parametern nach dem -i
  2. scpsteht für Secure Copy Protocol. Wenn Sie die Wörter kennen, können Sie sich leichter an den Befehl erinnern.
  3. -ischreibt vor, dass Sie die .pemDatei als nächsten Parameter angeben müssen. Wenn es keine gibt -i, brauchen Sie keine .pem.
  4. Beachten Sie das :~am Ende des Ziels für die EC2-Instanz.
Wald
quelle
6

Ich hatte genau das gleiche Problem, meine Lösung war zu

scp -i /path/pem -r /path/file/ ec2-user@public aws dns name: (hier leer lassen)

Sobald Sie diesen Teil erledigt haben, rufen Sie den SSH-Server und die MV-Datei am gewünschten Speicherort auf

Mustafa Kahraman
quelle
5
scp -i ~/path to pem file/file.pem -r(for directory) /PATH OF LOCAL/localfile user@hostname:PATH OF SERVER/serverdirectory
Prafull
quelle
3

Das folgende SCP-Format funktioniert für mich

scp -i /path/my-key-pair.pem [email protected]:~/SampleFile.txt ~/SampleFile2.txt

SampleFile.txt : Dies ist der Pfad aus Ihrem Stammverzeichnis (in meinem Fall / home / ubuntu). In meinem Fall war die Datei, die ich herunterladen wollte, unter / var / www

SampleFile2.txt : Dies ist der Pfad des Stammpfads Ihres Computers (in meinem Fall / home / MyPCUserName).

Also muss ich unten Befehl schreiben

scp -i /path/my-key-pair.pem [email protected]:~/../../var/www/Filename.zip ~/Downloads
Vatsal Shah
quelle
2

Datei von lokal an Server senden:

scp -i .ssh / awsinstance.pem my_local_file [email protected]: / home / ubuntu

Datei vom Server auf lokal herunterladen:

scp -i .ssh / awsinstance.pem [email protected]: / home / ubuntu / server_file.

Viraj Wadate
quelle
1

In diesem Video wird Schritt für Schritt (einschließlich der unten genannten Punkte) beschrieben, wie Sie mit SCP Dateien von einem lokalen Computer auf eine AWS EC2 Linux-Instanz kopieren .

So beheben Sie dieses spezielle Problem bei der Verwendung von SCP:

  1. Sie müssen den richtigen Linux-Benutzer angeben. Von Amazon :

    • Für Amazon Linux lautet der Benutzername ec2-user.
    • Für RHEL lautet der Benutzername ec2-user oder root.
    • Für Ubuntu lautet der Benutzername Ubuntu oder root.
    • Für Centos lautet der Benutzername centos.
    • Für Fedora lautet der Benutzername ec2-user.
    • Für SUSE lautet der Benutzername ec2-user oder root.
    • Wenn ec2-user und root nicht funktionieren, wenden Sie sich an Ihren AMI-Anbieter.
  2. Ihr privater Schlüssel darf nicht öffentlich sichtbar sein. Führen Sie den folgenden Befehl aus, damit nur der Root-Benutzer die Datei lesen kann.

    chmod 400 /path/to/yourKeyFile.pem
    
blackHoleDetector
quelle
0

Überprüfen Sie die Berechtigungen für die .pem-Datei ... openssh mag normalerweise keine weltweit lesbaren privaten Schlüssel und schlägt fehl (iir, scp leistet keine großartige Arbeit, um dem Benutzer dieses Feedback zu geben).

Können Sie einfach mit diesem Schlüssel zu Ihrem AWS-Host ssh?

Bryan Stenson
quelle
Ja, ich kann mit diesem Schlüssel auf meinen AWS-Host ssh. Tatsächlich besteht das Problem darin, dass ich mich auf dem Amazon-Host (über ssh) befinde. Wenn ich also eine CD mache, kann ich nur die Dateien auf meinem Amazon-Server sehen, nicht in meinem lokalen Mac-Download-Verzeichnis, in dem ich meine PEM-Datei gespeichert habe . Ich kann nur dann in mein lokales Mac Downloads-Verzeichnis cd, wenn ich meinen ec2-Host beende. Wenn ich meinen ec2-Host beende, kann ich die Datei phpMyAdmin nicht auf meinen ec2-Server hochladen. Die Erlaubnis meines Pems ist 400, ich denke das ist in Ordnung.
HoKy22
2
Vielen Dank für die Hilfe. Ich habe mein Problem anhand der letzten Frage gefunden, die Sie gestellt haben. Es scheint, ich kann entweder ssh oder scp, nicht zwei zusammen.
HoKy22
danke für den hinweis hellokitty22. Ich hatte zwei Terminals offen, eines für SSH und eines für SCP.
donebizkit
0

Zuerst sollten Sie den Dateimodus .pemvom Lese- und Schreibmodus in den Nur-Lese-Modus ändern . Dies kann nur durch einen einzigen Befehl im Terminal erfolgensudo chmod 400 your_public_key.pem

Shravan40
quelle
0

Ich habe alle oben genannten Vorschläge ausprobiert und nichts hat funktioniert. Ich habe die aktuelle Instanz beendet, eine weitere gestartet und den gleichen exakten Vorgang wiederholt. Diesmal keine Probleme. Manchmal könnte es die Schuld des entfernten Amis sein.

Marie D.
quelle
0

Das hat gerade bei mir funktioniert. Ich habe eine Kombination aus zwei anderen Antworten auf diese Frage verwendet.

scp -i /Users/me/documents/myKP.pem -r /Users/me/desktop/testDir \
       ec2-user@ec2-11-111-11-11.compute-1.amazonaws.com:/home/ec2-user/remoteDir

Das "[email protected]" wird aus dem öffentlichen DNS Ihrer ec2-Instanz kopiert und eingefügt.

Norman Davis
quelle
-1

Ich würde ... benutzen:

scp -i "path to .pem file" "file to be copeide from local machine" username@amazoninstance: 'destination folder to copy file on remote machine'

user1738344
quelle