ปัญหาการตั้งค่าคีย์ส่วนตัวสำหรับการเข้าสู่ระบบ SSH บน Mac OS X 10.10.5 (Yosemite) โดยไม่มีข้อความรหัสผ่าน


1

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

ใน Windows ฉันสามารถเข้าสู่ระบบผ่าน PuTTY ได้โดยไม่มีปัญหา

บน Mac OS X เมื่อฉันใช้ไคลเอ็นต์ SSH หน้าต่างจะถามรหัสผ่านปรากฏขึ้นและสิ่งที่ฉันป้อน SSH จะขอรหัสผ่าน ที่นี่ไม่สำคัญว่าฉันจะป้อนอะไรมันเขียนสิทธิ์ในการปฏิเสธเสมอ

ฉันพบว่าปัญหาที่คล้ายกันอาจเกิดขึ้นเมื่อคีย์ส่วนตัวอยู่ในรูปแบบ PPK (ซึ่งเป็นกรณีของฉัน) ดังนั้นฉันจึงพยายามแปลงให้เป็น PEM แต่มันไม่ได้ช่วย:

puttygen id.ppk -O private-openssh -o id.pem

ข้อมูลเพิ่มเติม:

การกำหนดค่า SSH ของฉันมีเส้นทางไปยังคีย์ส่วนตัวสำหรับโฮสต์ที่ฉันพยายามเชื่อมต่อ ฉันยังลองใช้พารามิเตอร์ ssh -ผม เพื่อระบุคีย์ด้วยตนเอง แต่มีผลลัพธ์เดียวกัน

คำสั่งที่ใช้ในการสร้างรูปแบบ PEM คือ 'puttygen id.ppk -O private-openssh -o id.pem'

เอาท์พุทเข้าสู่ระบบ (เฉพาะส่วนที่เกี่ยวข้อง)

debug1: Authentications that can continue: publickey,password debug1: Trying private key: /Users/josef/.ssh/talnet_rsa debug1: read PEM private key done: type RSA debug3: sign_and_send_pubkey: RSA #I removed these for security reasons# debug2: we sent a publickey packet, wait for reply debug1: Authentications that can continue: publickey,password debug2: we did not send a packet, disable method debug3: authmethod_lookup password debug3: remaining preferred: ,password debug3: authmethod_is_enabled password debug1: Next authentication method: password


บันทึกการดีบักคืออะไร -vvv ของคำสั่งที่คุณออก? คุณพยายามเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลอย่างไร
Jakuje

แทนที่จะแบ่งปันรหัสส่วนตัวที่เหมือนกันในหลาย ๆ เครื่องฉันจะสร้างรหัสส่วนตัวที่ไม่ซ้ำใครใน Mac และเพิ่มกุญแจสาธารณะให้กับเซิร์ฟเวอร์ระยะไกลเดียวกัน นอกจากนี้: คุณลองแปลง PPK เป็นรูปแบบ PEM ได้อย่างไร (และใช้ชื่ออะไร)
Arjan

ssh -vvv log คือ: (เฉพาะส่วนสุดท้าย) ลองใช้คีย์ส่วนตัว: /Users/josef/.ssh/talnet_rsa อ่านรหัสส่วนตัวของ PEM เรียบร้อยแล้ว: พิมพ์ RSA sign_and_send_pubkey: คีย์ RSA **** debug2: เราส่ง publickey แพ็กเก็ตรอการตอบกลับ debug1: การรับรองความถูกต้องที่สามารถดำเนินการต่อไปได้: publickey, password debug2: เราไม่ได้ส่งแพ็กเก็ตปิดการใช้งานวิธี debug3: authmethod_lookup รหัสผ่าน debug3: เหลือที่ต้องการ:, debug รหัสผ่าน 3: authmethod_is_enabled
Ascorti

@Arjan: รหัสนี้ใช้สำหรับเซิร์ฟเวอร์เดียวเท่านั้น คำสั่งที่ใช้เพื่อสร้างรูปแบบ PEM คือ 'puttygen id.ppk -O private-openssh -o id.pem'
Ascorti

ใช่คีย์นั้นใช้สำหรับเซิร์ฟเวอร์เดียว แต่ใช้กับไคลเอนต์หลาย ๆ เครื่อง (เนื่องจากคุณแปลง Windows PPK เป็นคีย์ทั่วไป) ฉันจะไม่ทำอย่างนั้น แต่นั่นไม่เกี่ยวข้องกับคำถามของคุณ
Arjan

คำตอบ:


0

หากคุณสร้างรหัสด้วย ssh-keygen มันจะแจ้งให้คุณป้อนรหัสผ่าน รหัสส่วนตัวจะถูกเข้ารหัสโดยใช้รหัสผ่านนี้ หากคุณต้องการใช้ไพรเวตคีย์ (สำหรับการให้สิทธิ์ตามตัวอย่าง) คุณต้องถอดรหัสก่อน หน้าต่างที่ปรากฏขึ้นขอให้คุณป้อนรหัสผ่านที่คุณป้อนด้วย ssh-keygen.

อาจเป็นไปได้ที่จะสร้างรหัสโดยไม่มีรหัสผ่าน แต่ใครก็ตามที่ได้รับรหัสนั้นสามารถใช้รหัสได้โดยไม่มีข้อ จำกัด เราไม่แนะนำให้ทำเช่นนั้นและ Mac ของคุณจะไม่ขอให้คุณใส่รหัสผ่านหากคุณยังไม่ได้ตั้งค่าใด ๆ

ฉันอาจผิดถ้าเป็นเช่นนั้นให้ป้อนรหัสผ่านที่ว่างเปล่า ฉันหมายถึงรหัสผ่าน "ไม่มีอะไรที่นี่"


0

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

เป็นการเริ่มต้นที่ดีสำหรับการตั้งค่ารหัสผ่านที่น้อยกว่า บน Windows คุณเพิ่มรหัสสาธารณะอย่างถูกต้อง นี่คือสิ่งที่คุณต้องทำเพื่อเพิ่มกุญแจสาธารณะให้กับ Mac OS X authorized_keys ไฟล์สำหรับผู้ใช้ของคุณ นี่คือขั้นตอนที่คุณควรใช้หากคุณมีไฟล์กุญแจสาธารณะอยู่แล้ว ( ~/.ssh/id_rsa.pub ) ตั้งอยู่บนเซิร์ฟเวอร์ระยะไกลของคุณ

คำนำ

จากความคิดเห็นและการแก้ไขล่าสุดของคุณคุณดูเหมือนจะมี .pem ไฟล์ ( id.pem ) ซึ่งเป็นเพียงรูปแบบคอนเทนเนอร์ที่ล้อมรอบคีย์สาธารณะและส่วนตัวในใบรับรอง ไม่แน่ใจว่า Mac OS X จะใช้อย่างไร .pem โดยตรง แต่สำหรับวิธีที่ฉันต้องการในการสร้างการตั้งค่าโดยไม่ใช้รหัสผ่านฉันขอแนะนำให้คุณดึงรหัสสาธารณะก่อนดำเนินการเพิ่มเติม มันง่ายพอที่จะทำสิ่งนี้ในระบบ Mac OS X จาก Terminal:

openssl rsa -in id.pem -pubout > ~/id_rsa.pub

แน่นอนเปลี่ยนชื่อ / เส้นทางของ id.pem เพื่อให้ตรงกับเส้นทางที่ไฟล์นั้นอยู่ในระบบ ~/id_rsa.pub เส้นทางบอกคำสั่งที่จะดึง id_rsa.pub ไปยังไดเรกทอรีบ้านของคุณ

และสำหรับคนที่อยู่ข้างนอกที่เห็นสิ่งที่ฉันทำด้านบนและสิ่งที่ฉันทำด้านล่างใช่คำสั่งอาจเป็นแบบนี้เพื่อทิ้งคีย์สาธารณะลงใน authorized_keys:

openssl rsa -in id.pem -pubout >> ~/.ssh/authorized_keys

แต่คำตอบนี้เกี่ยวกับการติดตามรายละเอียดทำความเข้าใจกระบวนการและดูว่าสิ่งใด“ แตกหัก” ดังนั้นทิ้งดั๊กคีย์สาธารณะอย่างหมดจด ~/.ssh/authorized_keys โดยตรงจะเร็วกว่า แต่ไม่จำเป็นต้องดีกว่าเพื่อจุดประสงค์ในการเรียนรู้

คำตอบที่สั้นกว่า

ในระยะสั้นฉันเชื่อว่าถ้า id_rsa.pub ถูกเพิ่มใน authorized_keysนี่เป็นปัญหาสิทธิ์ที่สามารถแก้ไขได้โดยเพียงแค่เรียกใช้คำสั่งต่อไปนี้โดยผู้ใช้ของคุณในระบบ Mac OS X:

chmod 600 ~/.ssh/authorized_keys

หากวิธีนี้ใช้งานไม่ได้อ่านรายละเอียดทั้งหมดด้านล่างเพื่อดูว่าคุณพลาดขั้นตอนใดไป

คำตอบอีกต่อไป

ก่อนอื่นคัดลอกเนื้อหาของ ~/.ssh/id_rsa.pub เข้าไป authorized_keys:

nano ~/.ssh/authorized_keys

เพียงวางเนื้อหาของ ~ / .ssh / id_rsa.pub at the bottom of ~ / .ssh / authorized_keys . If you do not have an authorized_keys file already you will be creating one with that นาโน command so you should set proper permissions on the file— อ่านเจ้าของ / ผู้ใช้ 600` คน & amp; เขียนเท่านั้น - ดังนั้น SSH จึงไม่สำลักแบบนี้:

chmod 600 ~/.ssh/authorized_keys

ตอนนี้คุณทำเสร็จแล้วสวยมาก ในขั้นตอนสุดท้ายคุณเพียงลงชื่อเข้าใช้เครื่องของคุณภายในเครื่องของคุณและคุณจะได้รับการแจ้งเตือน "โฮสต์ที่รู้จัก" สิ่งนี้:

The authenticity of host 'my_host(123.456.78.90)' can't be established.
ECDSA key fingerprint is ab:12:cd:34:ef:56:gh:78:ij:90:kl:12:mn:34:op:56.
Are you sure you want to continue connecting (yes/no)? yes

แค่ตอบ yes แล้วคุณจะได้รับข้อความเช่นนี้:

Warning: Permanently added 'my_host,123.456.78.90' (ECDSA) to the list of known hosts.

และตอนนี้คุณควรจะตั้งค่าทั้งหมด การเข้าสู่ระบบ SSH ใด ๆ ที่คุณทำกับเครื่องนั้นจะดำเนินต่อไปจะเป็นรหัสผ่านน้อยกว่า 100%

หากคุณต้องการตรวจแก้จุดบกพร่องการเชื่อมต่อให้แน่ใจว่าได้ใช้ -v ตัวเลือก (verbose) เช่นนี้:

ssh -v myuser@my_host

หากทำงานได้ดีคุณจะได้รับ verbose - แต่สะอาด - เอาท์พุทเช่นนี้:

OpenSSH_5.9p1 Debian-5ubuntu1.4, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to my_host [123.456.78.90] port 22.
debug1: Connection established.
debug1: identity file /home/myuser/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /home/myuser/.ssh/id_rsa-cert type -1
debug1: identity file /home/myuser/.ssh/id_dsa type -1
debug1: identity file /home/myuser/.ssh/id_dsa-cert type -1
debug1: identity file /home/myuser/.ssh/id_ecdsa type -1
debug1: identity file /home/myuser/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.4
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.4 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.4
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA ab:12:cd:34:ef:56:gh:78:ij:90:kl:12:mn:34:op:56
debug1: Host 'my_host' is known and matches the ECDSA host key.
debug1: Found key in /home/myuser/.ssh/known_hosts:3
debug1: ssh_ecdsa_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: /home/myuser/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
Authenticated to my_host  ([123.456.78.90]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 3.13.0-34-generic x86_64)

และหากไม่ได้ผลให้ดูที่การแก้ไขข้อบกพร่อง & amp; ดูว่าสิ่งใดบ้างที่ทำให้สำลักตรวจแก้จุดบกพร่อง


0

หากคุณแปลงคีย์ PPK สำเร็จเป็น openSSH Key โดยใช้ puttygen.exe มันควรจะทำงาน

ฉันถือว่าผิดพลาดที่นี่ พยายามที่จะ chmod 700 <private keyfile> บนระบบ Mac OS X ของคุณ

อาจตรวจสอบ chown. ผู้ใช้ของคุณควรถือ UID ที่ถูกต้องสำหรับกุญแจ

@Jakuje ยังพูดในความคิดเห็นใช้ด้วย ssh -vvv ... เพื่อแก้ไขปัญหาการเชื่อมต่อ

เช่น @Schwertspitze กล่าวว่านี่เป็นปัญหาด้านความปลอดภัยที่คุณควรระวัง

แก้ไข

เกี่ยวกับการตั้งค่าสิทธิ์การเข้าถึงที่ถูกต้อง ... ใน หัวข้ออื่น เป็นรายการสำหรับไฟล์ต่าง ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.