Khóa SSH: Quyền Quyền 0644 cho 'id_rsa.pub' quá mở. trên máy mac


261

Tôi tạo một cặp khóa ssh trên máy mac của mình và thêm khóa chung vào máy chủ ubfox của tôi (thực tế, đó là một máy ảo trên máy mac của tôi), nhưng khi tôi cố gắng đăng nhập máy chủ ubfox, nó nói:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
Permission denied (publickey,password).

Tôi đã thử nhiều cách để giải quyết vấn đề này, thay đổi chế độ tệp chính, thay đổi chế độ thư mục, như một số câu trả lời trên stackoverflow, nhưng nó không hoạt động.
sự cho phép tập tin chính:

vm dir:
drwxr-xr-x   4 tudouya  staff    136  4 29 10:37 vm

key file:
-rw-------  1 tudouya  staff  1679  4 29 10:30 vm_id_rsa
-rw-r--r--  1 tudouya  staff   391  4 29 10:30 vm_id_rsa.pub

xin vui lòng cho tôi một số ý tưởng ... =========================================

Tôi ghi thông tin máy chủ vào ssh_config:

Host ubuntuvm
    Hostname 10.211.55.17
    PreferredAuthentications publickey
    IdentityFile /Users/tudouya/.ssh/vm/vm_id_rsa.pub

Tôi chạy lệnh "ssh -v ubfoxvm", nó hiển thị:

ssh -v ubuntuvm
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 103: Applying options for *
debug1: /etc/ssh_config line 175: Applying options for ubuntuvm
debug1: Connecting to 10.211.55.17 [10.211.55.17] port 22.
debug1: Connection established.
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1p1 Ubuntu-8
debug1: match: OpenSSH_6.6.1p1 Ubuntu-8 pat OpenSSH*
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5-etm@openssh.com none
debug1: kex: client->server aes128-ctr hmac-md5-etm@openssh.com none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 55:6d:4f:0f:23:51:ac:8e:70:01:ec:0e:62:9e:1c:10
debug1: Host '10.211.55.17' is known and matches the RSA host key.
debug1: Found key in /Users/tudouya/.ssh/known_hosts:54
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: Server accepts key: pkalg ssh-rsa blen 279
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/Users/tudouya/.ssh/vm/vm_id_rsa.pub' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /Users/tudouya/.ssh/vm/vm_id_rsa.pub
debug1: No more authentication methods to try.
Permission denied (publickey,password).

1
Bạn có thể chỉnh sửa câu hỏi của mình để bao gồm lệnh ssh cụ thể mà bạn đang chạy không? Nếu tệp chính trong câu hỏi được chỉ định trong tệp cấu hình ssh, vui lòng bao gồm (các) dòng có liên quan từ tệp cấu hình.
Kenster

Đối với tôi là "quyền xấu"

Tôi gặp vấn đề này khi thêm -i id_rsa.pubvào lệnh ssh sử dụng để kết nối. Có vẻ như bắt buộc sử dụng một số khóa công khai trên lực lượng lệnh ssh để hỏi mật khẩu (ngay cả khi cụm mật khẩu trống, ít nhất là trong trường hợp của tôi)
Diego Andrés Díaz Espinoza

Câu trả lời:


148
debug1: identity file /Users/tudouya/.ssh/vm/vm_id_rsa.pub type 1

Có vẻ như bạn đang cố sử dụng tệp khóa sai. Các tập tin với phần mở rộng ".pub" là công key file. Tệp tương ứng không có phần mở rộng ".pub" là tệp khóa riêng . Khi bạn chạy máy khách ssh để kết nối với máy chủ từ xa, bạn phải cung cấp tệp khóa riêng cho máy khách ssh.

Bạn có thể có một dòng trong .ssh/configtệp của bạn (hoặc /etc/ssh_config) trông như thế này:

IdentityFile .../.ssh/vm/vm_id_rsa.pub

Bạn cần xóa tiện ích mở rộng ".pub" khỏi tên tệp:

IdentityFile .../.ssh/vm/vm_id_rsa

Tôi gặp vấn đề này với SQLPro và đã chọn sai .pubtệp công khai ( ) thay vì tệp riêng.
Henry

1
Tôi đã gặp lỗi này khi tôi làm ssh -i id_ed25519.pubtrong khi đang làm ssh -i id_ed25519việc
Boris

2
Cảm ơn đã cứu tôi ở đây.
Abner

Xuất sắc! Cảm ơn bạn!
Alliswell

574

Tôi đề nghị bạn làm:

chmod 400 ~ / .ssh / id_rsa

Đối với tôi công việc tốt.


33
“Permissions 0644 for 'id_rsa.pub' are too open."và chìa khóa do đó đã bị bỏ qua. Điều này có lẽ là do tôi đã sao chép tệp khóa, từ một PC khác của tôi. Nhưng sửa chữa quyền đã khắc phục vấn đề. cám ơn!
ký sinh

2
@ xoxn - 1'w3k4n Tại sao điều này lại tệ đến vậy? Thật có ý nghĩa nếu mọi người sao chép hoặc quản lý kém quyền truy cập đọc-ghi vào các tệp nhạy cảm này, rằng họ nên được sửa.
Gerard

5
Đây không phải là băng keo. Nếu bạn sao chép qua id của bạn, điều này có ý nghĩa.
ALisboa

Làm việc cho tôi như một giải pháp khi sao chép khóa ssh từ máy tính cũ!
Nick

1
Cũng hoạt động trên WSL
h-rai

59

Khóa nên được đọc bởi người dùng đã đăng nhập.

Thử cái này:

chmod 400 ~/.ssh/Key file
chmod 400 ~/.ssh/vm_id_rsa.pub

Với khóa công khai 400 hoặc 600 tôi nhận được định dạng không hợp lệ làmssh-add ~/.ssh/id_rsa.pub
rhand


23

Sau khi chạy lệnh bên dưới, nó hoạt động với tôi

sudo chmod 600 /path/to/my/key.pem

20

Trong trường hợp của tôi, đó là một tập tin .pem. Hóa ra giữ tốt cho điều đó quá. Thay đổi quyền của tập tin và nó đã làm việc.

chmod 400 ~/.ssh/dev-shared.pem

Cảm ơn tất cả những người đã giúp đỡ ở trên.


13

Nếu các khóa nằm trong thư mục ~ / .ssh, hãy sử dụng

chmod 400 ~ / .ssh / id_rsa

Nếu các khóa trong thư mục khác nhau, sử dụng

chmod 400 thư mục_path / id_rsa

Điều này làm việc cho tôi.


2
Làm thế nào để cải thiện các câu trả lời khác?
Nico Haase

2
đó không phải là chìa khóa quán rượu cần được bảo vệ, là khóa riêng
Picarus

Khóa riêng phải được bảo vệ.
bashan

Nó làm việc cho tôi. Tôi nghĩ chmod 400 ~/.ssh/id_rsađây là ý của bạn @Anirban. Như đã nêu ở trên: Tệp có phần mở rộng ".pub" là tệp khóa chung. Tệp tương ứng không có phần mở rộng ".pub" là tệp khóa riêng. Chúng ta cần bảo vệ một tư nhân.
naveenKumar

Chỉnh sửa câu trả lời. Nó phải là khóa riêng.
Anirban

12

Rất nhiều câu trả lời tương tự nhưng không có lời giải thích ...

Lỗi được ném vì các quyền của tệp khóa riêng quá mở. Đó là một rủi ro bảo mật.

Thay đổi quyền trên tệp khóa riêng ở mức tối thiểu (chỉ đọc bởi chủ sở hữu)

  1. Chủ sở hữu thay đổi chown <unix-name> <private-key-file>
  2. Đặt quyền tối thiểu (chỉ đọc cho chủ sở hữu tệp) chmod 400 <private-key-file>

7

Đối với tôi, chế độ mặc định id_rsa600, có nghĩa là readablewritable.

Sau khi tôi đẩy tệp này sang repo git và kéo nó từ máy tính khác, đôi khi chế độ của tệp khóa riêng trở thành -rw-r--r--.

Khi tôi kéo repo bằng ssh sau khi chỉ định tệp khóa riêng, nó đã thất bại và nhắc nhở cảnh báo tương tự với bạn. Sau đây là kịch bản của tôi.

ssh-agent bash -c "ssh-add $PATH_OF_RSA/id_rsa; \
git pull git@gitee.com:someone/somerepo.git "

Tôi khắc phục vấn đề này chỉ bằng cách thay đổi chế độ thành 600.

chmod 600 $PATH_TO_RSA/id_rsa

6

cho phép 400 làm cho khóa riêng tư và không thể truy cập bởi ai đó không xác định. Nó làm cho chìa khóa như là một bảo vệ.

chmod 400 /Users/tudouya/.ssh/vm/vm_id_rsa.pub

3

Khóa SSH có nghĩa là riêng tư nên 644quyền quá mở.

rw -> User 
r -> Group
r -> Others

Bằng cách thay đổi sự cho phép của tập tin để 600sử dụng

chmod 600 <filename>

giải quyết vấn đề Vì nó làm cho chìa khóa chỉ có thể truy cập cho người dùng.

Tham chiếu: https://www.linux.com/training-tutorials/under Hiểu-linux-file-permissions /


2

chmod 400 /etc/ssh/* làm việc cho tôi


3
Bạn có thể làm điều này miễn là bạn nhận ra mình đang ảnh hưởng đến tất cả các khóa trong thư mục.
J2N

2

Nếu bạn đang sử dụng tệp .ssh / config, hãy thử

chmod 0400 .ssh/config

sau đó:

chmod 0400 .ssh/<<KEYFILE_PATH>>

2

Những người đề xuất chmod 400 id_rsa.pub nghe không đúng chút nào. Hoàn toàn có thể là op đã sử dụng khóa pub thay vì khóa riêng cho ssh.

Vì vậy, nó có thể đơn giản như ssh -i /Users/tudouya/.ssh/vm/vm_id_rsa (the private key) user@hostđể sửa chữa nó.

--- cập nhật ---

Kiểm tra bài viết này https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2 để biết cách thiết lập khóa ssh


Có thể, mặc dù trong trường hợp của tôi khi tôi tìm kiếm vấn đề này và nhận được câu trả lời, chmod 400 là thứ tôi cần để giải quyết vấn đề của mình. Cảm ơn tất cả những người đã giúp!
J2N

1

Chỉ cần chạy bên dưới để pem của bạn

sudo chmod 600 /path/to/my/key.pem 

-8

Tôi loại bỏ .pub file, và nó hoạt động.


1
Loại bỏ tệp .pub là không cần thiết. Điều đó cũng có nghĩa là bạn không có bản ghi khóa công khai trên máy để sử dụng sau.
Henry

1
Nếu bạn có OpenSSH, bạn có thể tạo lại tệp khóa chung bị thiếu từ khóa riêng bằng cách sử dụng ssh-keygen -i -f /path/to/private.key > /desired/path/to/public.key. Vì vậy, nó không thực sự bị mất. :)
dannysauer
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.