ฉันกำลังพยายามใช้ไคลเอ็นต์ 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; ดูว่าสิ่งใดบ้างที่ทำให้สำลักตรวจแก้จุดบกพร่อง
-vvv
ของคำสั่งที่คุณออก? คุณพยายามเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลอย่างไร