Ich versuche, mein Mac Terminal zu verwenden, um eine Datei von Downloads (phpMyAdmin, die ich online heruntergeladen habe) in meine Amazon EC2-Instanz zu scpfen.
Der Befehl, den ich verwendete, war:
scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz [email protected]:~/.
Der Fehler, den ich erhielt: Warnung: Identitätsdatei myAmazonKey.pem nicht zugänglich: Keine solche Datei oder Verzeichnis .. Keine Berechtigung verweigert (publickey) .. __ Verbindung verloren
Sowohl mein myAmazonkey.pem als auch phpMyAdmin-3.4.5-all-languages.tar.gz sind 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 erhielt: Warnung: Identitätsdatei /User/Hello_Kitty22/Downloads/myAmazonkey.pem nicht zugänglich: Keine solche Datei oder Verzeichnis. . Berechtigung abgelehnt (publickey) . verlorene Verbindung
Kann mir bitte jemand sagen, wie ich mein Problem beheben kann?
p.s. Es gibt einen ähnlichen Beitrag: scp (sichere Kopie) an die ec2-Instanz ohne Kennwort Er beantwortet jedoch meine Frage nicht.
Versuchen Sie, den Benutzer als ec2-user
anzugeben, z.
scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz [email protected]:~/.
Siehe Verbindung zu Linux/UNIX-Instanzen mithilfe von SSH herstellen.
zweites Verzeichnis ist Ihr Ziel, verwenden Sie dort nicht den Servernamen. Mit anderen Worten, Sie müssen keinen Computernamen für den Computer angeben, auf dem Sie sich gerade befinden.
scp -i /path/to/your/.pemkey -r /copy/from/path [email protected]:/copy/to/path
-r wenn es ein Verzeichnis ist.
Ihr Schlüssel darf nicht öffentlich sichtbar sein, damit SSH funktioniert. Verwenden Sie diesen Befehl bei Bedarf:
chmod 400 yourPublicKeyFile.pem
Sie sollten sich auf Ihrem lokalen Rechner befinden, um den obigen Befehl scp auszuführen.
Versuchen Sie es auf Ihrem lokalen Rechner:
scp -i ~/Downloads/myAmazonKey.pem ~/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz [email protected]:~/.
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:
-i
angegeben werden.scp
steht für sicheres Kopierprotokoll. Die Kenntnis der Wörter erleichtert das Erinnern an den Befehl.-i
schreibt vor, dass Sie die .pem
-Datei als nächsten Parameter angeben müssen. Wenn kein -i
vorhanden ist, benötigen Sie keinen .pem
.:~
am Ende des Ziels für die EC2-Instanz. Ich hatte genau das gleiche Problem, meine Lösung war zu
scp -i /path/pem -r /path/file/ [email protected] aws dns name:
(hier leer lassen)
wenn Sie diesen Teil abgeschlossen haben, gelangen Sie in den SSH-Server und die MV-Datei an den gewünschten Ort
scp -i ~/path to pem file/file.pem -r(for directory) /PATH OF LOCAL/localfile [email protected]:PATH OF SERVER/serverdirectory
Datei vom lokalen zum Server senden:
scp -i .ssh/awsinstance.pem my_local_file [email protected]:/home/ubuntu
Datei vom Server auf Local herunterladen:
scp -i .ssh/awsinstance.pem [email protected]:/home/ubuntu/server_file.
Überprüfen Sie die Berechtigungen für die .pem-Datei ... openssh mag normalerweise keine für die Welt lesbaren privaten Schlüssel und schlägt fehl (iir, scp liefert dem Benutzer dieses Feedback nicht besonders gut).
Können Sie mit diesem Schlüssel einfach zu Ihrem AWS-Host ssh?
Zuerst sollten Sie den Modus der .pem
-Datei vom Lese- und Schreibmodus in den Nur-Lese-Modus ändern. Dies kann nur durch einen einzigen Befehl im Terminal Sudo chmod 400 your_public_key.pem
erfolgen.
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 Root-Pfads Ihrer Maschine (In meinem Fall/home/MyPCUserName)
Also muss ich unter dem Befehl schreiben
scp -i /path/my-key-pair.pem [email protected]:~/../../var/www/Filename.Zip ~/Downloads
Die Verwendung von SCP zum Kopieren von Dateien von einem lokalen Computer auf eine AWS EC2 Linux-Instanz wird Schritt für Schritt (einschließlich der unten genannten Punkte) in diesem Video beschrieben.
So beheben Sie dieses spezielle Problem bei der Verwendung von SCP:
Sie müssen den richtigen Linux-Benutzer angeben. Von Amazon :
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
Ich habe alle oben genannten Vorschläge ausprobiert und nichts hat funktioniert. Ich beendete die aktuelle Instanz, startete eine weitere Instanz und wiederholte genau diesen Vorgang. Diesmal keine Probleme. Manchmal liegt es möglicherweise an der entfernten AMI.