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  [email protected]:~/.

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  [email protected]:~/.

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.

HoKy22
źródło
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 [email protected]:~/.

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

WP McNeill
źródło
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.

Syed Priom
źródło
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
Castelmager
źródło
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  [email protected]:~/.
DV Dasari
źródło
9

Oto szczegóły działania instancji EC2 :

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

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.
Forrest
źródło
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

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

Poniższy format SCP działa dla mnie

scp -i /path/my-key-pair.pem [email protected]:~/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 [email protected]:~/../../var/www/Filename.zip ~/Downloads
Vatsal Shah
źródło
2

Wyślij plik z lokalnego na serwer:

scp -i .ssh / awsinstance.pem mój_lokalny_plik [email protected]: / home / ubuntu

Pobierz plik z serwera do lokalnego:

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

Viraj Wadate
źródło
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
    
blackHoleDetector
źródło
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?

Bryan Stenson
źródło
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

Shravan40
źródło
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.

Marie D.
źródło
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

[email protected]” jest kopiowany i wklejany z publicznego DNS twojego wystąpienia ec2.

Norman Davis
źródło
-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'

użytkownik1738344
źródło