Używasz scp do skopiowania pliku do instancji Amazon EC2?


198

Próbuję użyć mojego terminala Mac do scpowania pliku z Pobranych (phpMyAdmin pobrałem online) do mojej instancji Amazon EC2.

Polecenie, którego użyłem to:

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

Wystąpił błąd: Ostrzeżenie: Plik tożsamości myAmazonKey.pem jest niedostępny: Brak takiego pliku lub katalogu. Odmowa dostępu (publickey). utracone połączenie

Zarówno mój myAmazonkey.pem, jak i phpMyAdmin-3.4.5-all-languages.tar.gz są w plikach do pobrania, więc spróbowałem

scp -i /Users/Hello_Kitty22/Downloads/myAmazonKey.pem /Users/Hello_Kitty22/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

i pojawia się błąd: Ostrzeżenie: Plik tożsamości / Użytkownik / Witaj_Kitty22/Downloads/myAmazonkey.pem niedostępny: Brak takiego pliku lub katalogu. Odmowa dostępu (publickey). utracone połączenie

Czy ktoś może mi powiedzieć, jak rozwiązać mój problem?

ps jest podobny post: scp (bezpieczna kopia) do instancji ec2 bez hasła, ale nie odpowiada na moje pytanie.


Mam wrażenie, że kiedy uruchamiam instancję Amazon w Internecie, nie mogę już uzyskać dostępu do moich lokalnych plików w
— Pobranych

Odpowiedzi:


376

Spróbuj określić użytkownika ec2-user, np

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz ec2-user@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

Zobacz Łączenie się z instancjami Linux / UNIX za pomocą SSH .


16
działa świetnie. Pamiętaj, że domyślnym użytkownikiem użytkownika może być „ubuntu”, jeśli używasz instancji ubuntu.
— RussellStewart

oczywiście kopiowanie do / może nie działać. Dzięki za oświecenie!
— dnuske

@DanielDropik Nie wiem, czy żartujesz, czy nie ... ale :/spróbuję skopiować folder do katalogu głównego systemu, co dałoby błędy uprawnień na wszystkich komputerach bez uruchamiania sudo (lub jako root).
— Dobz

dlaczego to mówi Zaloguj się jako użytkownik „ubuntu” zamiast użytkownika „root”. co muszę zrobić dla kopiowania
— Arjun

w moim przypadku korzystałem z użytkownika, ale różnicę dodałem publiczny dns mec2-50-17-16-67.compute-1.amazonaws.com zamiast nazwy domeny
— shareef

31

drugi katalog to miejsce docelowe, nie używaj tam nazwy serwera. Innymi słowy, nie musisz podawać nazwy komputera, na którym aktualnie się znajdujesz.

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

-r, jeśli jest to katalog.


19

Twój klucz nie może być publicznie widoczny, aby SSH działał. W razie potrzeby użyj tego polecenia:

chmod 400 yourPublicKeyFile.pem

Uratowałeś mojego brata
— Mayukha Sarkara

13

Powinieneś być na swoim komputerze lokalnym, aby wypróbować powyższe polecenie scp.

Na komputerze lokalnym spróbuj:

scp -i ~/Downloads/myAmazonKey.pem ~/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

9

Oto szczegóły działania instancji EC2 :

scp -i /path/to/whatever.pem /users/me/path-to-file ec2-user@ec2-55-55-555-555.compute-1.amazonaws.com:~

Kilka uwag na początek:

  1. Zwróć uwagę na odstępy między trzema parametrami podanymi po -i
  2. scpoznacza protokół bezpiecznego kopiowania. Znajomość słów ułatwia zapamiętanie polecenia.
  3. -inakazuje podanie .pempliku jako następnego parametru. Jeśli nie -i, to nie potrzebujesz .pem.
  4. Zwróć uwagę :~na koniec miejsca docelowego dla instancji EC2.

7

Miałem dokładnie ten sam problem, moim rozwiązaniem było

scp -i /path/pem -r /path/file/ ec2-user@public aws dns name: (zostaw to puste tutaj)

po wykonaniu tej części przejdź do serwera ssh i pliku mv do wybranej lokalizacji


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

3

Poniższy format SCP działa dla mnie

scp -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com:~/SampleFile.txt ~/SampleFile2.txt

SampleFile.txt : Będzie to ścieżka z katalogu głównego (w moim przypadku / home / ubuntu). w moim przypadku plik, który chciałem pobrać, to / var / www

SampleFile2.txt : Będzie to ścieżka do katalogu głównego komputera (w moim przypadku / home / MyPCUserName)

Więc muszę napisać poniżej polecenia

scp -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com:~/../../var/www/Filename.zip ~/Downloads

2

Wyślij plik z lokalnego na serwer:

scp -i .ssh / awsinstance.pem mój_lokalny_plik ubuntu@XX.XXX.XXX.XXX: / home / ubuntu

Pobierz plik z serwera do lokalnego:

scp -i .ssh / awsinstance.pem ubuntu@XX.XXX.XXX.XXX: / home / ubuntu / plik_serwera.


1

Proces używania SCP do kopiowania plików z komputera lokalnego do instancji AWS EC2 Linux jest omawiany krok po kroku (w tym punkty wymienione poniżej) w tym filmie .

Aby rozwiązać ten konkretny problem z użyciem SCP:

  1. Musisz określić poprawnego użytkownika systemu Linux. Z Amazon :

    • W systemie Amazon Linux nazwa użytkownika to ec2-user.
    • W przypadku RHEL nazwa użytkownika to ec2-user lub root.
    • W systemie Ubuntu nazwa użytkownika to ubuntu lub root.
    • W przypadku Centos nazwa użytkownika to centos.
    • W przypadku Fedory nazwa użytkownika to ec2-user.
    • W przypadku SUSE nazwa użytkownika to ec2-user lub root.
    • W przeciwnym razie, jeśli użytkownik ec2 i użytkownik root nie działają, skontaktuj się z dostawcą AMI.
  2. Twój klucz prywatny nie może być widoczny publicznie. Uruchom następujące polecenie, aby tylko użytkownik root mógł odczytać plik.

    chmod 400 /path/to/yourKeyFile.pem
    

0

Sprawdź uprawnienia do pliku .pem ... openssh zwykle nie lubi czytelnych na całym świecie kluczy prywatnych i zawiedzie (iir, scp nie wykonuje świetnej pracy, przekazując użytkownikowi tę opinię).

Czy możesz po prostu ssh z tym kluczem do swojego hosta AWS?


Tak, mogę ssh z tym kluczem do mojego hosta AWS. W rzeczywistości mam problem z tym, że jestem na hoście Amazon (przez ssh), więc kiedy robię CD, widzę tylko pliki na moim serwerze Amazon, a nie w lokalnym katalogu Mac do pobrania, w którym zapisałem plik pem . Mogę zapisywać cd tylko do mojego lokalnego katalogu Mac do pobrania, kiedy wychodzę z hosta ec2. Ale jeśli przejdę do mojego hosta ec2, nie mogę załadować pliku phpMyAdmin na mój serwer ec2. Zgoda mojego pema wynosi 400, myślę, że to w porządku.
— HoKy22,

2
Dziękuję bardzo za pomoc, znalazłem mój problem na podstawie ostatniego zadanego pytania. Wygląda na to, że mogę albo ssh albo scp, a nie dwa razem.
— HoKy22,

dzięki za podpowiedź hellokitty22. Miałem otwarte dwa terminale, jeden dla ssh i jeden dla scp.
— donebizkit

0

Najpierw należy zmienić tryb .pempliku z trybu odczytu i zapisu na tryb tylko do odczytu. Można to zrobić tylko jednym poleceniem w terminalusudo chmod 400 your_public_key.pem


0

Wypróbowałem wszystkie wyżej wymienione sugestie i nic nie działało. Zakończyłem bieżącą instancję, uruchomiłem inną i powtórzyłem dokładnie ten sam proces. Tym razem żadnych problemów. Czasami może to być wina zdalnego ami.


0

To po prostu działało dla mnie. Użyłem kombinacji dwóch innych odpowiedzi na to pytanie.

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

„Ec2-user@ec2-11-111-11-11.compute-1.amazonaws.com” jest kopiowany i wklejany z publicznego DNS twojego wystąpienia ec2.


-1

Użyłbym:

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

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.