CẢNH BÁO: FILE CHÍNH HÃNG KHÔNG GIỚI HẠN! khi cố gắng SSH vào Amazon EC2 Instance


190

Tôi đang làm việc để thiết lập Panda trên phiên bản Amazon EC2. Tôi đã thiết lập tài khoản và công cụ của mình đêm qua và không gặp vấn đề gì khi sử dụng SSH để tương tác với cá thể của riêng tôi, nhưng hiện tại tôi không được phép vào ví dụ EC2 của Panda. Bắt đầu với Panda

Tôi nhận được lỗi sau:

@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @

Permissions 0644 for '~/.ec2/id_rsa-gsg-keypair' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

Tôi đã mã hóa cặp khóa của mình lên 600 để vào cá thể của tôi đêm qua và đã thử nghiệm độ dài đặt các quyền thành 0 và thậm chí tạo ra các chuỗi khóa mới, nhưng dường như không có gì hoạt động.

Bất kỳ trợ giúp nào sẽ là một trợ giúp tuyệt vời!


Hừm, có vẻ như trừ khi các quyền được đặt thành 777 trên thư mục, tập lệnh ec2-run-instance không thể tìm thấy các keyfiles của tôi. Tôi mới sử dụng SSH vì vậy tôi có thể đang xem xét một cái gì đó.


Các trường hợp chạy ec2 chỉ nên yêu cầu một tên khóa, đó là một cái gì đó sống ở phía Amazon. Bạn chỉ nên sử dụng khóa riêng thực tế của mình (khóa trên đĩa) khi bạn SSH. Bạn gặp lỗi gì từ các trường hợp ec2-run?
dùng27619

2
tiêu đề khủng khiếp cho câu hỏi này.
MikeNereson

2
@MikeNereson: vui lòng chỉnh sửa nó, đó là cách chúng tôi làm cho mọi thứ tốt hơn ở đây
Stu Thompson

Bạn có chắc chắn đã đặt nó thành 0600 (bát phân) chứ không phải 600 (thập phân) không?
hyde

5
chmod 400 ~/.ssh/id_rsa Tham khảo: stackoverflow.com/a/9270753/2082569
atulkhatri 6/2/2015

Câu trả lời:


209

Tôi đã kiểm tra khóa của mình tới 600 để vào cá thể tối qua,

Và đây là cách nó được cho là.

Từ tài liệu EC2, chúng tôi có "Nếu bạn đang sử dụng OpenSSH (hoặc bất kỳ ứng dụng SSH hoang tưởng hợp lý nào) thì có lẽ bạn sẽ cần phải đặt quyền của tệp này để bạn chỉ có thể đọc được." Tài liệu Panda mà bạn liên kết đến các liên kết đến tài liệu của Amazon nhưng thực sự không truyền đạt tầm quan trọng của tất cả.

Ý tưởng là các tệp cặp khóa giống như mật khẩu và cần được bảo vệ. Vì vậy, ứng dụng khách ssh bạn đang sử dụng yêu cầu các tệp đó được bảo mật và chỉ tài khoản của bạn mới có thể đọc chúng.

Đặt thư mục thành 700 thực sự là đủ, nhưng 777 sẽ không gây hại miễn là các tệp là 600.

Bất kỳ vấn đề nào bạn đang gặp phải là phía khách hàng, vì vậy hãy chắc chắn bao gồm thông tin hệ điều hành cục bộ với bất kỳ câu hỏi tiếp theo nào!


3
Tôi vừa gặp phải một tình huống hôm nay khi tôi muốn keyfile có thể đọc được theo nhóm (sử dụng ssh không phải để đăng nhập cá nhân, nhưng để thực thi một tập lệnh trên máy chủ từ xa, người dùng chuyên dụng trên máy chủ từ xa cho mục đích này, ủy quyền chỉ bị khóa cho biết tập lệnh sẽ chạy và nhiều người trên máy chủ gốc sẽ có quyền truy cập để chạy tập lệnh). Ồ, tôi đoán cách giải quyết đơn giản là đặt các bản sao vào ~ / .ssh / cho tất cả người dùng nên có quyền truy cập - hoặc điền ủy quyền_key với tất cả các khóa cá nhân.
tobixen

@tobixen: Hai năm tới, nhưng ... cách giải quyết 'chính xác' sẽ là đặt khóa trong một người dùng chuyên dụng và cho phép người dùng nhóm sudo truy cập để chạy lệnh đó với tư cách là người dùng chuyên dụng.
Stu Thompson

@StuThndry liên kết đến tài liệu EC2 dường như đã chết. Bạn có thể vui lòng cập nhật?
Aniket Thakur

Tôi không thể thấy những gì tôi làm để làm cho nó hoạt động trong câu trả lời của bạn, Vui lòng cung cấp câu trả lời :)
Pratik

@Pratik cài đặt 600 cho cả hai tệp chính và 777 cho thư mục sẽ hoạt động.
Jamo

55

Đảm bảo rằng thư mục chứa các tệp khóa riêng được đặt thành 700

chmod 700 ~/.ec2

Bất kỳ lý do đặc biệt tại sao bạn muốn có đặc quyền thực thi trên tệp?
Zoltán

1
@ Zoltán đó là một thư mục, không phải là một tập tin.
avmohan

Tôi chỉ sử dụng cái này trên tệp .pem và nó hoạt động với tôi.
CGTheLegend

30

Để khắc phục điều này, 1) bạn sẽ cần đặt lại quyền về mặc định:

sudo chmod 600 ~/.ssh/id_rsa sudo chmod 600 ~/.ssh/id_rsa.pub

Nếu bạn gặp phải một lỗi khác: Bạn có chắc chắn muốn tiếp tục kết nối (có / không) không? có Không thể thêm máy chủ vào danh sách các máy chủ đã biết (/home/geek/.ssh/ Unknown_hosts).

2) Điều này có nghĩa là các quyền trên tệp đó cũng được đặt không chính xác và có thể được điều chỉnh bằng cách này:

sudo chmod 644 ~/.ssh/known_hosts

3) Cuối cùng, bạn cũng có thể cần phải điều chỉnh các quyền của thư mục:

sudo chmod 755 ~/.ssh

Điều này sẽ giúp bạn sao lưu và chạy.


17

Các tập tin khóa riêng nên được bảo vệ. Trong trường hợp của tôi, tôi đã sử dụng xác thực public_key trong một thời gian dài và tôi đã sử dụng để đặt quyền là 600 (rw- --- ---) cho khóa riêng và 644 (rw- r-- r--) và cho thư mục .ssh trong thư mục nhà bạn sẽ có 700 quyền (rwx --- ---). Để cài đặt, hãy vào thư mục nhà của người dùng và chạy lệnh sau


Đặt quyền 700 cho thư mục .ssh

chmod 700 .ssh


Đặt quyền 600 cho tệp khóa riêng

chmod 600 .ssh/id_rsa


Đặt quyền 644 cho tệp khóa công khai

chmod 644 .ssh/id_rsa.pub


2

Giữ khóa riêng, khóa chung, know_host của bạn trong cùng thư mục và thử đăng nhập như dưới đây:

ssh -I(small i) "hi.pem" ec2-user@ec2-**-***-**-***.us-west-2.compute.amazonaws.com
  • Cùng một thư mục theo nghĩa , cd /Users/prince/Desktop. Bây giờ gõ lslệnh và bạn sẽ thấy **.pem **.ppk known_hosts

Lưu ý: Bạn phải cố gắng đăng nhập từ cùng một thư mục hoặc bạn sẽ gặp lỗi từ chối cấp phép vì nó không thể tìm thấy tệp .pem từ thư mục hiện tại của bạn.


Nếu bạn muốn có thể SSH từ bất kỳ thư mục nào, bạn có thể thêm ~/.ssh/configtệp sau vào tệp của mình ...

Host your.server
HostName ec2-user@ec2-**-***-**-***.us-west-2.compute.amazonaws.com
User ec2-user
IdentityFile ~/.ec2/id_rsa-gsg-keypair
IdentitiesOnly yes

Bây giờ bạn có thể SSH đến máy chủ của mình bất kể thư mục ở đâu chỉ bằng cách nhập ssh your.server(hoặc bất kỳ tên nào bạn đặt sau "Máy chủ").


1

Trên windows, Hãy thử sử dụng git bash và sử dụng các lệnh Linux của bạn ở đó. Cách tiếp cận dễ dàng

chmod 400 *****.pem

ssh -i "******.pem" ubuntu@ec2-11-111-111-111.us-east-2.compute.amazonaws.com

Nếu sử dụng WSL, hãy đảm bảo bạn sao chép tệp pem vào thư mục Linux vì chmod sẽ không hiệu quả trong các thư mục / mnt.
Paulo Merson

1

Thay đổi quyền tệp bằng cách sử dụng lệnh chmod

sudo chmod 700 keyfile.pem

0

Tôi đang suy nghĩ về một cái gì đó khác, nếu bạn đang cố đăng nhập bằng một tên người dùng khác không tồn tại thì đây là tin nhắn bạn sẽ nhận được.

Vì vậy, tôi cho rằng bạn có thể đang cố gắng ssh với người dùng ec2 nhưng tôi nhớ lại gần đây hầu hết các phần trăm AMI chẳng hạn đang sử dụng người dùng centos thay vì người dùng ec2

Vì vậy, nếu bạn ssh -i file.pem centos@public_IPvui lòng cho tôi biết bạn đang viết ssh với tên người dùng phù hợp nếu không đây có thể là lý do mạnh mẽ khiến bạn thấy thông báo lỗi như vậy ngay cả với quyền phù hợp trên ~ / .ssh / id_rsa hoặc file.pem


0

Chỉ là một lưu ý cho bất cứ ai vấp phải điều này:

Nếu bạn đang cố gắng SSH bằng một khóa đã được chia sẻ với bạn, ví dụ:

ssh -i /path/to/keyfile.pem user@some-host

Trong trường hợp keyfile.pemlà cá nhân / khóa công khai chia sẻ với bạn và bạn đang sử dụng nó để kết nối, chắc chắn rằng bạn lưu nó vào ~/.ssh/chmod 777.

Cố gắng sử dụng tệp khi nó được lưu ở nơi khác trên máy của tôi là do lỗi của OP. Không chắc chắn nếu nó có liên quan trực tiếp.


0

Giải pháp là làm cho nó chỉ có thể đọc được bởi chủ sở hữu của tệp, tức là hai chữ số cuối của biểu diễn chế độ bát phân phải bằng 0 (ví dụ chế độ 0400).

OpenSSH kiểm tra cái này trong authfile.c, trong một hàm có tên sshkey_perm_ok:

/*
 * if a key owned by the user is accessed, then we check the
 * permissions of the file. if the key owned by a different user,
 * then we don't care.
 */
if ((st.st_uid == getuid()) && (st.st_mode & 077) != 0) {
    error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
    error("@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @");
    error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
    error("Permissions 0%3.3o for '%s' are too open.",
        (u_int)st.st_mode & 0777, filename);
    error("It is required that your private key files are NOT accessible by others.");
    error("This private key will be ignored.");
    return SSH_ERR_KEY_BAD_PERMISSIONS;
}

Xem dòng đầu tiên sau nhận xét: nó thực hiện "bitwise và" so với chế độ của tệp, chọn tất cả các bit trong hai chữ số bát phân cuối cùng (vì 07là bát phân cho 0b111, trong đó mỗi bit tương ứng với r / w / x) .

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.