scp (bezpieczna kopia) do wystąpienia ec2 bez hasła

404

Mam uruchomioną instancję EC2 (FreeBSD 9 AMI ami-8cce3fe5) i mogę ssh do niej za pomocą mojego pliku klucza utworzonego przez Amazon bez pytania o hasło, bez problemu.

Jednak gdy chcę skopiować plik do instancji za pomocą scp, jestem proszony o podanie hasła:

scp somefile.txt -i mykey.pem [email protected]:/

Password:

Wszelkie pomysły, dlaczego tak się dzieje / jak można temu zapobiec?

Hoff
źródło
Czy używasz dokładnie tego samego identyfikatora dla użytkownika i hosta?
Lynch
Nie jestem pewien, czy rozumiem, co rozumiesz przez identyfikator, czy możesz to wyjaśnić?
Hoff,
jeśli dla jednego połączenia użyjesz adresu IP, a dla drugiego użyjesz nazwy, to nie zadziała. Właśnie zobaczyłem, że używasz -iopcji, aby podać swoją tożsamość. Być może powinieneś również pokazać polecenie, którego używasz do logowania za pomocą ssh.
Lynch,
dzięki Lynch, zrozumiałem!
Hoff,

Odpowiedzi:

804

Rozgryzłem to. Miałem argumenty w niewłaściwej kolejności. To działa:

scp -i mykey.pem somefile.txt [email protected]:/
Hoff
źródło
14
od tych, którzy rozumieją, jak połączyć się z ec2 przez ssh, wystarczy zmienić sshpolecenie na scpi dodać plik nazwy po pliku pem.
Claudio Santos,
11
Ponieważ ta odpowiedź jest trochę stara, najnowszy przykład z mojej nowej instancji EC2: scp -i kp1.pem ./file.txt [email protected]: / home / ec2-user
siliconrockstar 11.01.15
1
@siliconrockstar Twoje oświadczenie [email protected]:/home/ec2-usermożna łatwo zastąpić krótszym i łatwiejszym [email protected]:./ ./FTW!
brock
2
Bardzo późny komentarz, ale to, co sugeruje @ClaudioSantos, nie działa dokładnie, jeśli używasz niestandardowego portu. Jest to -p dla ssh i -P dla scp.
Inukshuk
1
Mogę użyć mojego pliku * .PEM do ssh w ec2. jednak gdy chcę go użyć do SCP pliku, pojawia się błąd „Odmowa zezwolenia”! Jak mogę to rozwiązać?
AleX_
58
scp -i /path/to/your/.pemkey -r /copy/from/path user@server:/copy/to/path
Syed Priom
źródło
Parametr (-r) nie jest wymagany, ale jest wymagany do usunięcia (/) z końca zdalnej ścieżki. Twój przykład zadziałał dla mnie, wielkie dzięki
Abbas
35

Użyłem poniższego polecenia, aby skopiować z lokalnego Linuksa Centos 7 do AWS EC2.

scp -i user_key.pem file.txt [email protected]:/home/ec2-user
Renato Coutinho
źródło
20

Uczynienie z komentarza siliconerockstar odpowiedzi, ponieważ zadziałało dla mnie

scp -i kp1.pem ./file.txt [email protected]:/home/ec2-user
joseph.hainline
źródło
19
scp -i ~/.ssh/key.pem ec2-user@ip:/home/ec2-user/file-to-copy.txt .

Nazwa pliku nie powinna znajdować się między plikiem pem a ciągiem użytkownika ec2 - to nie działa. Pozwala to również zarezerwować nazwę skopiowanego pliku.

Dele
źródło
14

skopiuj plik z lokalnego serwera na zdalny serwer

sudo scp -i my-pem-file.pem ./source/test.txt [email protected]:~/destination/

skopiuj plik ze zdalnego serwera na komputer lokalny

sudo scp -i my-pem-file.pem [email protected]:~/source/of/remote/test.txt ./where/to/put

Podstawowa składnia to: -

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

-ijest dla pliku tożsamości

Jamil Noyda
źródło
8

Załóżmy, że plik pem i plik somefile.txt, który chcesz wysłać, znajdują się w folderze Pobrane

scp -i ~/Downloads/mykey.pem ~/Downloads/somefile.txt [email protected]:~/

daj mi znać, jeśli to nie działa

Yatender Singh
źródło
scp -i /Users/Username/Downloads/myfile.pem -r [email protected]: ~ / ~ / Desktop / w przypadku, gdy chcesz przenieść plik z serwera do lokalnego
Yatender Singh
2
Dzięki otrzymałem „odmowę dostępu” :/na końcu, ale dzięki :~/temu działa
kardamon
tak, ponieważ: / jest folderem głównym, a: ~ / jest folderem użytkownika, więc jeśli jesteś użytkownikiem root, to: / lub: ~ / cokolwiek będzie działać, a jeśli nie jesteś użytkownikiem root, to tylko: ~ / musisz użyć.
Yatender Singh
3

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

będzie to bardzo pomocne dla was wszystkich

Szczekać na
źródło
2

Mój hadoopec2cluster.pemplik był jedynym w katalogu na moim lokalnym komputerze Mac, nie mogłem go przesłać do aws przy użyciu scp -i hadoopec2cluster.pem hadoopec2cluster.pem ubuntu@serverip:~.

Skopiowano hadoopec2cluster.pem do hadoopec2cluster_2.pem, a następnie scp -i hadoopec2cluster.pem hadoopec2cluster_2.pem ubuntu@serverip:~. Voila!

jesień14123
źródło
2

Rozłączyło mnie to, ponieważ określałem mój plik klucza publicznego

scp -i [private key file path]

Kiedy złapałem ten błąd i zamiast tego zmieniłem go na ścieżkę klucza prywatnego, wszystko było gotowe.

BuvinJ
źródło
2

W twoim przypadku użytkownik rootnie będzie miał żadnych problemów. Ale w niektórych przypadkach, gdy wymagane jest zalogowanie się w SSH jako inny użytkownik, upewnij się, że katalog, z którego korzystasz, scpma odpowiednie uprawnienia dla tego użytkownika.

Shawn
źródło
1

Aby korzystać z PSCP, potrzebujesz klucza prywatnego wygenerowanego podczas konwersji klucza prywatnego za pomocą PuTTYgen. Potrzebujesz także publicznego adresu DNS swojego wystąpienia Linuxa

pscp -i C:\path\my-key-pair.ppk C:\path\Sample_file.txt ec2-user@public_dns:/home/ec2-user/Sample_file.txt
dheeraj kumar
źródło
0

napisz ten kod

scp -r -o "ForwardAgent=yes" /Users/pengge/11.vim [email protected]:/root/

Jeśli masz klucz SSH z dostępem do serwera docelowego, a serwer źródłowy nie, dodanie -o „ForwardAgent = yes” pozwoli Ci przesłać agenta SSH do serwera źródłowego, aby mógł on użyć Twojego klucza SSH do łączenia się z serwer docelowy.

庄景鹏
źródło
-6

Właśnie przetestowane:

Uruchom następujące polecenie:

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

Następnie:

  1. utwórz ami (obraz ec2).
  2. uruchom z nowego ami (zdjęcie) od kroku nr 2 wybierz nowe klucze.
Amar essa
źródło