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.