คีย์ SSH:“ สิทธิ์ 0644 สำหรับ 'id_rsa.pub' นั้นเปิดเกินไป” บน mac


263

ฉันสร้างคู่คีย์ ssh บน mac ของฉันและเพิ่มกุญแจสาธารณะไปยังเซิร์ฟเวอร์ ubuntu ของฉัน (อันที่จริงมันเป็นเครื่องเสมือนบน mac ของฉัน) แต่เมื่อฉันพยายามเข้าสู่ระบบเซิร์ฟเวอร์ ubuntu มันบอกว่า:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         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).

ฉันได้ลองหลายวิธีเพื่อแก้ปัญหานี้เปลี่ยนโหมดไฟล์คีย์เปลี่ยนโหมดโฟลเดอร์เป็นคำตอบบางอย่างเกี่ยวกับสแต็คโอเวอร์โฟลว์ แต่มันไม่ทำงาน
การอนุญาตไฟล์คีย์:

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

กรุณาให้ความคิดกับ

ฉัน... ============================================= I เขียนข้อมูลโฮสต์เพื่อ ssh_config:

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

ฉันเรียกใช้คำสั่ง "ssh -v ubuntuvm" มันแสดง:

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
คุณสามารถแก้ไขคำถามเพื่อรวมคำสั่ง ssh เฉพาะที่คุณใช้อยู่ได้หรือไม่ หากมีการระบุไฟล์คีย์ที่เป็นปัญหาในไฟล์กำหนดค่า ssh โปรดรวมบรรทัดที่เกี่ยวข้องจากไฟล์กำหนดค่าด้วย
Kenster

สำหรับฉันคือ "การอนุญาตที่ไม่ดี"
insign

ฉันประสบปัญหานี้เมื่อเพิ่ม-i id_rsa.pubคำสั่ง ssh ที่ใช้สำหรับการเชื่อมต่อ ดูเหมือนว่าการบังคับให้ใช้คีย์สาธารณะบางอย่างในการบังคับใช้คำสั่ง ssh เพื่อขอรหัสผ่าน (แม้ว่าข้อความรหัสผ่านว่างเปล่าอย่างน้อยในกรณีของฉัน)
Diego AndrésDíaz Espinoza

คำตอบ:


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

ดูเหมือนว่าคุณกำลังพยายามใช้ไฟล์คีย์ผิด ไฟล์ที่มีนามสกุล ".pub" เป็นไฟล์กุญแจสาธารณะ ไฟล์ที่เกี่ยวข้องที่ไม่มีส่วนขยาย ".pub" คือไฟล์คีย์ส่วนตัว เมื่อคุณเรียกใช้ไคลเอนต์ ssh เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลคุณจะต้องให้ไฟล์กุญแจส่วนตัวให้กับลูกค้า ssh

คุณอาจมีบรรทัดใน.ssh/configไฟล์ (หรือ/etc/ssh_config) ซึ่งมีลักษณะดังนี้:

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

คุณต้องลบส่วนขยาย ".pub" ออกจากชื่อไฟล์:

IdentityFile .../.ssh/vm/vm_id_rsa

ฉันมีปัญหานี้กับ SQLPro และเลือกไฟล์ public ( .pub) ไม่ถูกต้องแทนที่จะเป็นไฟล์ส่วนตัว
เฮนรี่

1
ฉันได้รับข้อผิดพลาดนี้เมื่อฉันทำงานssh -i id_ed25519.pubขณะที่ssh -i id_ed25519ทำงานอยู่
บอริส

2
ขอบคุณฉันบันทึกที่นี่
อับเนอร์

ยอดเยี่ยม! ขอบคุณ!
Alliswell

580

ฉันขอแนะนำให้คุณทำ:

chmod 400 ~ / .ssh / id_rsa

สำหรับฉันทำงานได้ดี


35
“Permissions 0644 for 'id_rsa.pub' are too open."และกุญแจก็ถูกเพิกเฉย อาจเป็นเพราะฉันคัดลอกไฟล์คีย์จากพีซีเครื่องอื่น แต่การแก้ไขการอนุญาตแก้ไขปัญหาได้ ขอบคุณ!
parasrish

2
@ xoxn - 1'w3k4n ทำไมมันถึงแย่จัง เหมาะสมถ้าคนคัดลอกหรือจัดการการเข้าถึงการอ่าน - เขียนของไฟล์ที่ละเอียดอ่อนเหล่านี้ได้ไม่ดีว่าควรได้รับการแก้ไข
เจอราร์ด

5
นี่ไม่ใช่เทปพันท่อ หากคุณคัดลอกรหัสประจำตัวของคุณนี่เหมาะสมแล้ว
ALisboa

ทำงานให้ฉันเป็นวิธีแก้ปัญหาเมื่อคัดลอกคีย์ ssh จากคอมพิวเตอร์เครื่องเก่า!
Nick

1
ใช้งานได้กับ WSL ด้วย
เอชอาร์

59

ผู้ใช้ที่เข้าสู่ระบบควรอ่านรหัสได้

ลองสิ่งนี้:

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

ด้วยคีย์สาธารณะ 400 หรือ 600 ที่ฉันได้รับในรูปแบบที่ไม่ถูกต้องทำssh-add ~/.ssh/id_rsa.pub
rhand

53
chmod 400 path/to/filename

งานนี้สำหรับฉัน เมื่อฉันทำไฟล์นี้ฉันสามารถเชื่อมต่อกับอินสแตนซ์ EC2 ของฉันได้


เป็นความสุขของฉัน :) ขอบคุณ
Muhammad Wajahat Anwar

2
นี่คือคำตอบ
Mladen Danic

23

หลังจากรันคำสั่งด้านล่างมันใช้งานได้สำหรับฉัน

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

20

ในกรณีของฉันมันเป็นไฟล์. pem กลับกลายเป็นสิ่งที่ดีเช่นกัน เปลี่ยนการอนุญาตของไฟล์และใช้งานได้

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

ขอบคุณสำหรับทุกคนที่ช่วยด้านบน


13

หากคีย์อยู่ในไดเรกทอรี ~ / .ssh ให้ใช้

chmod 400 ~ / .ssh / id_rsa

หากคีย์อยู่ในไดเรกทอรีอื่นให้ใช้

chmod 400 directory_path / id_rsa

สิ่งนี้ใช้ได้สำหรับฉัน


2
สิ่งนี้จะปรับปรุงคำตอบอื่น ๆ ได้อย่างไร
Nico Haase

2
มันไม่ใช่กุญแจผับที่จะต้องได้รับการปกป้องเป็นกุญแจส่วนตัว
Picarus

คีย์ส่วนตัวจะต้องได้รับการป้องกัน
ชาน

มันใช้งานได้สำหรับฉัน ฉันคิดว่าchmod 400 ~/.ssh/id_rsaนี่คือสิ่งที่คุณหมายถึง @Anirban ตามที่ระบุข้างต้น: ไฟล์ที่มีนามสกุล ".pub" เป็นไฟล์กุญแจสาธารณะ ไฟล์ที่เกี่ยวข้องที่ไม่มีส่วนขยาย ".pub" คือไฟล์คีย์ส่วนตัว เราจำเป็นต้องปกป้องความเป็นส่วนตัว
naveenKumar

แก้ไขคำตอบ ควรเป็นรหัสส่วนตัว
Anirban

12

คำตอบที่คล้ายกันเป็นจำนวนมาก แต่ไม่มีคำอธิบาย ...

ข้อผิดพลาดเกิดขึ้นเนื่องจากการอนุญาตไฟล์คีย์ส่วนตัวเปิดเกินไป มันเป็นความเสี่ยงด้านความปลอดภัย

เปลี่ยนการอนุญาตในไฟล์ไพรเวตคีย์ให้น้อยที่สุด (อ่านโดยเจ้าของเท่านั้น)

  1. เปลี่ยนเจ้าของ chown <unix-name> <private-key-file>
  2. ตั้งค่าการอนุญาตขั้นต่ำ (อ่านได้เฉพาะเจ้าของไฟล์) chmod 400 <private-key-file>

7

สำหรับฉันโหมดเริ่มต้นid_rsaเป็น600ที่หมายและreadablewritable

หลังจากที่ผมผลักดันไฟล์นี้ไป repo -rw-r--r--คอมไพล์และดึงมันออกมาจากเครื่องคอมพิวเตอร์อีกบางครั้งรูปแบบของไฟล์กุญแจส่วนตัวที่จะกลายเป็น

เมื่อฉันดึง repo ด้วย ssh หลังจากระบุไฟล์คีย์ส่วนตัวมันล้มเหลวและได้รับคำเตือนเหมือนกันกับคุณ ต่อไปนี้เป็นสคริปต์ของฉัน

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

600ฉันจะแก้ไขปัญหานี้เพียงแค่เปลี่ยนโหมดไปที่

chmod 600 $PATH_TO_RSA/id_rsa

6

ให้สิทธิ์ 400 ทำให้คีย์เป็นส่วนตัวและไม่สามารถเข้าถึงได้โดยคนที่ไม่รู้จัก มันทำให้ปุ่มเป็นหนึ่งในการป้องกัน

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

3

คีย์ SSH นั้นมีความเป็นส่วนตัวดังนั้นจึง644อนุญาตให้เปิดได้

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

โดยการเปลี่ยนการอนุญาตให้600ใช้ไฟล์เป็น

chmod 600 <filename>

แก้ปัญหา มันทำให้กุญแจเข้าถึงได้โดยผู้ใช้เท่านั้น

Ref: https://www.linux.com/training-tutorials/understanding-linux-file-permissions/


2

chmod 400 /etc/ssh/* ทำงานได้สำหรับฉัน


3
คุณสามารถทำได้ตราบใดที่คุณรู้ว่าคุณมีผลกระทบต่อคีย์ทั้งหมดในไดเรกทอรี
J2N


2

ผู้ที่แนะนำ chmod 400 id_rsa.pub นั้นฟังดูไม่ดีเลย มันค่อนข้างเป็นไปได้ที่ op ใช้ pub key แทน private key เพื่อ ssh

ดังนั้นมันอาจจะง่ายเหมือนssh -i /Users/tudouya/.ssh/vm/vm_id_rsa (the private key) user@hostการแก้ไข

--- อัปเดต ---

ตรวจสอบบทความนี้ https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2สำหรับวิธีตั้งค่าคีย์ ssh


อาจเป็นได้แม้ว่าในกรณีของฉันเมื่อฉันค้นหาปัญหานี้และได้รับคำตอบ chmod 400 คือสิ่งที่ฉันต้องการเพื่อแก้ไขปัญหาของฉัน ขอบคุณทุกคนที่ช่วย!
J2N


-8

ฉันลบ.pub fileและมันใช้งานได้


1
การลบไฟล์. pub นั้นไม่จำเป็น นอกจากนี้ยังหมายความว่าคุณไม่มีบันทึกกุญแจสาธารณะในเครื่องของคุณเพื่อใช้ในภายหลัง
เฮนรี่

1
ถ้าคุณมี OpenSSH ssh-keygen -i -f /path/to/private.key > /desired/path/to/public.keyคุณสามารถงอกใหม่ไฟล์ที่สำคัญที่ขาดหายไปของประชาชนจากคีย์ส่วนตัวโดยใช้ ดังนั้นมันไม่ได้หายไปจริงๆ :)
dannysauer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.