Sử dụng scp để sao chép tệp vào Amazon EC2?


198

Tôi đang cố gắng sử dụng Mac Terminal của mình để quét một tệp từ Tải xuống (phpMyAdmin tôi đã tải xuống trực tuyến) vào ví dụ Amazon EC2 của tôi.

Lệnh tôi đã sử dụng là:

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

Lỗi tôi gặp: Cảnh báo: Tệp nhận dạng myAmazonKey.pem không truy cập được: Không có tệp hoặc thư mục như vậy. Quyền bị từ chối (khóa công khai). mất kết nối

Cả myAmazonkey.pem và phpMyAdmin-3.4.5-all-Languages.tar.gz đều có trong Tải xuống, vì vậy sau đó tôi đã thử

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:~/.

và lỗi tôi gặp phải: Cảnh báo: Tệp nhận dạng /User/Hello_Kitty22/Doads/myAmazonkey.pem không truy cập được: Không có tệp hoặc thư mục như vậy. Quyền bị từ chối (khóa công khai). mất kết nối

Bất cứ ai có thể xin vui lòng cho tôi biết làm thế nào để khắc phục vấn đề của tôi?

ps có một bài tương tự: scp (bản sao an toàn) đến ví dụ ec2 không có mật khẩu nhưng nó không trả lời câu hỏi của tôi.


Tôi cảm thấy như khi tôi bắt đầu phiên bản Amazon trực tuyến của mình, tôi không thể truy cập các tệp cục bộ của mình trong Tải xuống nữa
HoKy22

Câu trả lời:


375

Hãy thử chỉ định người dùng ec2-user, vd

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

Xem Kết nối với các trường hợp Linux / UNIX bằng SSH .


16
làm việc tuyệt vời Lưu ý rằng người dùng mặc định của người dùng của bạn có thể là "ubfox" nếu bạn đang chạy phiên bản ubfox.
RussellStewart

tất nhiên sao chép vào / có thể không hoạt động. Cảm ơn đã giác ngộ!
dnuske

@DanielDropik Tôi không biết bạn có đùa hay không ... nhưng :/sẽ thử sao chép thư mục vào thư mục gốc của hệ thống, điều này sẽ gây ra lỗi cho phép trên tất cả các máy mà không chạy sudo (hoặc là root).
Dobz

Tại sao nó nói Vui lòng đăng nhập với tư cách là người dùng "ubfox" chứ không phải người dùng "root". những gì tôi cần làm để sao chép
Arjun

trong trường hợp của tôi, tôi đã sử dụng người dùng nhưng, sự khác biệt tôi thêm vào dns mec2-50-17-16-67.compute-1.amazonaws.com thay vì một tên miền
shareef 24/8/2016

31

thư mục thứ hai là đích đến của bạn, đừng sử dụng tên máy chủ ở đó. Nói cách khác, bạn không cần đề cập đến tên máy cho máy bạn hiện đang sử dụng.

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

-r nếu đó là một thư mục.


19

Khóa của bạn không được xem công khai để SSH hoạt động. Sử dụng lệnh này nếu cần:

chmod 400 yourPublicKeyFile.pem

Bạn đã cứu em trai tôi
Mayukh Sarkar

13

Bạn nên vào máy cục bộ để thử lệnh scp ở trên.

Trên máy cục bộ của bạn hãy thử:

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

Dưới đây là chi tiết về những gì hoạt động cho một phiên bản EC2 :

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

Vài lưu ý khi bắt đầu:

  1. Lưu ý khoảng trắng giữa ba tham số đã cho sau -i
  2. scplà viết tắt của giao thức sao chép an toàn. Biết các từ làm cho việc nhớ lệnh dễ dàng hơn.
  3. -ira lệnh rằng bạn cần cung cấp .pemtệp như là thông số tiếp theo. Nếu không có -i, hơn bạn không cần a .pem.
  4. Lưu ý :~ở cuối đích cho thể hiện EC2.

6

Tôi đã có cùng một vấn đề, giải pháp của tôi là

scp -i /path/pem -r /path/file/ ec2-user@public aws dns name: (để trống ở đây)

Một khi bạn đã thực hiện phần này, hãy vào máy chủ ssh và tập tin mv đến vị trí mong muốn


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

3

Dưới đây định dạng SCP hoạt động với tôi

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

SampleFile.txt : Nó sẽ là đường dẫn từ thư mục gốc của bạn (Trong trường hợp của tôi, / home / ubfox). trong trường hợp của tôi, tệp mà tôi muốn tải xuống là tại / var / www

SampleFile2.txt : Đây sẽ là đường dẫn của đường dẫn gốc của máy của bạn (Trong trường hợp của tôi, / home / MyPCUserName)

Vì vậy, tôi phải viết lệnh dưới đây

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

2

Gửi tệp từ Local đến Server:

scp -i .ssh / awsinstance.pem my_local_file ub Ubuntu@XX.XXX.XXX.XXX: / home / ub Ubuntu

Tải tập tin từ Máy chủ về Địa phương:

scp -i .ssh / awsinstance.pem ubfox@XX.XXX.XXX.XXX: / home / ub Ubuntu / server_file.


1

Quá trình sử dụng SCP để sao chép các tệp từ máy cục bộ sang phiên bản AWS EC2 Linux được trình bày từng bước (bao gồm các điểm được đề cập bên dưới) trong video này .

Để khắc phục sự cố cụ thể này bằng cách sử dụng SCP:

  1. Bạn cần chỉ định đúng người dùng Linux. Từ Amazon :

    • Đối với Amazon Linux, tên người dùng là ec2-user.
    • Đối với RHEL, tên người dùng là ec2-user hoặc root.
    • Đối với Ubuntu, tên người dùng là ubfox hoặc root.
    • Đối với Centos, tên người dùng là centos.
    • Đối với Fedora, tên người dùng là ec2-user.
    • Đối với SUSE, tên người dùng là ec2-user hoặc root.
    • Mặt khác, nếu người dùng ec2 và root không hoạt động, hãy kiểm tra với nhà cung cấp AMI của bạn.
  2. Khóa riêng của bạn không được hiển thị công khai. Chạy lệnh sau để chỉ người dùng root có thể đọc tệp.

    chmod 400 /path/to/yourKeyFile.pem
    

0

Kiểm tra các quyền trên tệp .pem ... openssh thường không giống các khóa riêng có thể đọc được trên thế giới và sẽ thất bại (iir, scp không làm tốt công việc cung cấp phản hồi này cho người dùng).

Bạn có thể chỉ cần ssh với khóa đó cho máy chủ AWS của bạn?


Có, tôi có thể ssh với khóa đó đến máy chủ AWS của mình. Trên thực tế, vấn đề tôi gặp phải là, tôi đang sử dụng máy chủ Amazon (thông qua ssh), vì vậy khi tôi làm cd, tôi chỉ có thể thấy các tệp trên máy chủ Amazon của mình chứ không phải thư mục Tải xuống Mac cục bộ nơi tôi đã lưu tệp pem của mình . Tôi chỉ có thể cd vào thư mục Tải xuống Mac cục bộ khi thoát khỏi máy chủ ec2. Nhưng nếu tôi thoát khỏi máy chủ ec2, tôi không thể tải tệp phpMyAdmin lên máy chủ ec2 của mình. Sự cho phép của pem của tôi là 400, tôi nghĩ điều đó tốt.
HoKy22

2
Cảm ơn bạn rất nhiều vì sự giúp đỡ, tôi tìm thấy vấn đề của tôi bằng câu hỏi cuối cùng bạn hỏi. Có vẻ như tôi có thể ssh hoặc scp, không phải hai cùng nhau.
HoKy22

cảm ơn vì gợi ý hellokitty22. Tôi đã có hai thiết bị đầu cuối mở một cho ssh và một cho scp quá.
donebizkit

0

Trước tiên, bạn nên thay đổi chế độ .pemtập tin từ chế độ đọc và ghi sang chế độ chỉ đọc. Điều này có thể được thực hiện chỉ bằng một lệnh duy nhất trong terminalsudo chmod 400 your_public_key.pem


0

Tôi đã thử tất cả các đề xuất được đề cập ở trên và không có gì làm việc. Tôi đã chấm dứt trường hợp hiện tại, đưa ra một ví dụ khác và lặp lại quá trình chính xác tương tự. Lần này không có vấn đề gì. Đôi khi nó có thể là lỗi của ami từ xa.


0

Điều này chỉ làm việc cho tôi. Tôi đã sử dụng kết hợp hai câu trả lời khác cho câu hỏi này.

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" được sao chép và dán từ DNS công khai của đối tượng ec2 của bạn.


-1

Tôi sẽ dùng:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.