Quyền của tệp đối với tệp .pem đối với SSH và SCP là gì


69

Tôi đã cố gắng SSH vào máy chủ AWS Ubuntu của mình và sao chép thư mục vào máy cục bộ của tôi. Trong suốt quá trình tôi gặp các lỗi cấp phép tệp khác nhau (ghi chú bên dưới).

Có một quyền truy cập tệp cụ thể cần thiết cho tệp .pem cho phép tôi SSH và SCP không?
Hoặc tôi có cần thay đổi quyền truy cập tệp hai lần - một lần cho SSH và một lần khác cho SCP sau khi tôi đăng nhập không?

Dưới đây là các lệnh tôi đang sử dụng:

SSH:

ssh -i sentiment.pem Todo@54.555.555.555

Sao chép từ xa vào máy tính cục bộ với:

scp Todo@54.555.555.555:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

Tôi đang dùng Mac OS X 10.7.5.


Phep thử va lôi sai:

1.) Sau khi tôi ban đầu tải xuống tệp .pem, các quyền của nó đã được đặt thành, TÔI NGHINK: 0644

-rw-r - r - @ 1 nhân viên Toga 1692 ngày 18 tháng 2 21:27 sentiment.pem

Sau đó tôi đã cố gắng SSH qua thiết bị đầu cuối và nhận được những điều sau đây:

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0644 for 'sentiment.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: sentiment.pem
Permission denied (publickey).

2.) Tôi đã cập nhật quyền truy cập tệp thành: chmod 660 sentiment.pem

Sau khi cập nhật, các quyền được đặt thành:

-rw-rw ---- @ 1 nhân viên Toga 1692 Ngày 18 tháng 2 21:27 sentiment.pem

Sau đó tôi đã cố gắng SSH qua thiết bị đầu cuối và nhận được những điều sau đây:

WARNING: UNPROTECTED PRIVATE KEY FILE! 
Permissions 0660 for 'sentiment.pem' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: sentiment.pem
Permission denied (publickey).

3.) Tôi đã cập nhật quyền truy cập tệp thành: chmod 600 sentiment.pem

Sau khi cập nhật, các quyền được đặt thành:

-rw ------- @ 1 nhân viên Toga 1692 ngày 18 tháng 2 21:27 sentiment.pem

Sau đó tôi đã thử SSH qua thiết bị đầu cuối và đã thành công !!

4.) Bây giờ đã đăng nhập, tôi chạy lệnh sao chép thư mục từ xa vào máy tính cục bộ của mình với:

scp Todo@54.555.555.555:/home/ubuntu/sentimentfolder /Users/Toga/Desktop/sentimentlocal

Trả về:

Permission denied (publickey).

Các lệnh SCP đã cố gắng:

1.) đã thêm lệnh -i và tham chiếu tệp .pem:

scp -i sentiment.pem Todo@54.555.555.555: / home / ubfox / sentimentfolder / Users / Toga / Desktop / sentimentlocal

2.) đã thêm lệnh -i, tham chiếu tệp .pem và thay đổi người dùng cho AWS thành người dùng ec2:

scp -i sentiment.pem ec2-user@54.555.555.555: / home / ubfox / sentimentfolder / Users / Toga / Desktop / sentimentlocal

3.) đã thêm lệnh -i, tham chiếu tệp .pem, thay đổi người dùng cho AWS thành người dùng ec2 và thêm đường dẫn tệp hoàn chỉnh cho vị trí của tệp .pem:

scp -i /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem ec2-user@54.555.555.555: / home / ub Ubuntu / sentiment / Users / Toga / Desktop / sentiment


Bạn phải nói với scp cũng sử dụng tệp .pem
daniel kullmann

cảm ơn bạn đã gọi nó ra @danielkullmann có ý nghĩa. Tôi đã thử kết hợp các lệnh tham chiếu trực tiếp tệp .pem nhưng chưa có gì hoạt động. Tôi đã cập nhật câu hỏi với một phần có tiêu đề: "Các lệnh SCP đã cố gắng" để lập danh mục những gì tôi đã thử. Nếu bạn là một lệnh thay thế, xin vui lòng cho tôi biết. Cảm ơn bạn.
George Jester

Câu trả lời:


110

Truy cập vào đây Cách kết nối với Amazon EC2 từ xa bằng cách sử dụng SSH hoặc tham khảo bên dưới.

Cách kết nối với Amazon EC2 từ xa bằng cách sử dụng SSH:

  1. Tải xuống tệp .pem.
  2. Trong Bảng điều khiển Amazon, chọn "Trường hợp" từ thanh bên trái, sau đó chọn phiên bản bạn muốn kết nối.
  3. Nhấp vào "Hành động", sau đó chọn "Kết nối"
  4. Nhấp vào "Kết nối với máy khách SSH độc lập"
  5. Mở một cửa sổ Terminal
  6. Tạo một thư mục:

    # mkdir -p ~/.ssh
    
  7. Di chuyển tệp .pem đã tải xuống vào thư mục .ssh mà chúng ta vừa tạo:

    # mv ~/Downloads/ec2private.pem ~/.ssh
    
  8. Thay đổi quyền của tệp .pem để chỉ người dùng root mới có thể đọc nó:

    # chmod 400 ~/.ssh/ec2private.pem
    
  9. Tạo một tập tin cấu hình:

    # vim ~/.ssh/config
    

    Nhập văn bản sau vào tập tin cấu hình đó:

    Host *amazonaws.com
    IdentityFile ~/.ssh/ec2private.pem
    User ec2-user
    

    Lưu tập tin đó.

  10. Sử dụng lệnh ssh với tên máy chủ DNS công cộng của bạn để kết nối với thể hiện của bạn.
    ví dụ:

    # ssh ec2-54-23-23-23-34.example.amazonaws.com
    

1
Tôi tò mò: Tại sao downvote?
erik

1
Tôi đã không bỏ phiếu này. Điều này thực sự có vẻ hữu ích, không chắc chắn nếu nó sẽ giải quyết vấn đề khi tôi cần scp từ điều khiển từ xa đến máy tính cục bộ của tôi. Tôi sẽ thử cái này và xem điều gì sẽ xảy ra. Cảm ơn Babin.
George Jester

Khi sao chép toàn bộ thư mục và nội dung của nó sử dụng scp -r.
bahamat

1
Câu trả lời tuyệt vời. Để tránh di chuyển pem xung quanh, bạn có thể sử dụng cờ ssh -i để chỉ định khóa chung để sử dụng. ví dụ: đường dẫn ssh -i / đến / ec2private.pem ec2-54-23-23-23-34.example.amazonaws.com
Mafro34

15

chmod 400 {keyfile}.pem là những gì amazon hướng dẫn và nó hoạt động.


Đây là câu trả lời tôi đang tìm kiếm, tất cả các hướng dẫn trong câu trả lời được chấp nhận là thực hành tốt ... nhưng không liên quan đến vấn đề.
sarink

3

Có vẻ như bạn không được sử dụng địa chỉ IP, nhưng tên máy chủ đầy đủ của hệ thống trong lệnh SCP. Các tài liệu AWS mô tả điều này trên http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html trong phần "Chuyển tệp sang Linux / Unix Instances từ Linux / Unix bằng SCP".

Và sử dụng -rđể sao chép thư mục.

Và lưu ý rằng tên người dùng mặc định là khác nhau đối với các hình ảnh khác nhau:

Đối với Amazon Linux, tên người dùng mặc định là ec2-user. Đối với RHEL5, tên người dùng thường rootnhưng có thể là ec2-user. Đối với Ubuntu, tên người dùng là ubuntu. Đối với SUSE Linux, tên người dùng là root. Nếu không, hãy kiểm tra với nhà cung cấp AMI của bạn.

Vì vậy, sử dụng lệnh này:

scp -r -i  /Users/Toga/Desktop/rollup/Personal/Serial_Project_Starter/sentiment/sentiment.pem ubuntu@ec2-xx-xx-xx-xx.compute-x.amazonaws.com:~/sentiment /Users/Toga/Desktop/sentimentlocal

1
Một lời nhắc nhở smack đầu tốt cho tôi để sử dụng tên người dùng chính xác. Nhận được lỗi trên và tôi cần phải nhớ sử dụng người dùng ubfox trên các phiên bản ubfox.
md_rasler

2

"Quyền bị từ chối (khóa công khai)" là từ máy chủ từ xa, do đó bạn đang sử dụng khóa sai, không được phép kết nối hoặc có lỗi đánh máy trong tệp ủy quyền từ xa.


2
chmod 0400 pemfile.pem

ssh -i path_to_pem_file -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ec2-machine name

3
Vui lòng giải thích sshlệnh của bạn (và cũng cung cấp một tài liệu tham khảo, nếu có thể). BTW, chmod 400đã được cung cấp trong một câu trả lời chín tháng trước.
Scott
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.