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 root@my.ec2.id.amazonaws.com:/

Password:

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


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 root@my.ec2.id.amazonaws.com:/

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 ec2-user@1.2.3.4: / home / ec2-user
siliconrockstar 11.01.15

1
@siliconrockstar Twoje oświadczenie ec2-user@1.2.3.4:/home/ec2-usermożna łatwo zastąpić krótszym i łatwiejszym ec2-user@1.2.3.4:./ ./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

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 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 .

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.


14

skopiuj plik z lokalnego serwera na zdalny serwer

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

skopiuj plik ze zdalnego serwera na komputer lokalny

sudo scp -i my-pem-file.pem ec2-user@1.2.3.4:~/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


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 root@my.ec2.id.amazonaws.com:~/

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


scp -i /Users/Username/Downloads/myfile.pem -r ubuntu@my.ect.id.amazonaws.com: ~ / ~ / 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


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!


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.


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.


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

0

napisz ten kod

scp -r -o "ForwardAgent=yes" /Users/pengge/11.vim root@192.168.2.228:/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.


-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.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.