จะส่งออกกุญแจสาธารณะของ SSH ได้อย่างไร


12

ฉันต้องตั้งค่าเซสชัน ssh ระหว่างเซิร์ฟเวอร์สองเครื่องและไม่ต้องการให้สคริปต์กรอกชื่อผู้ใช้และรหัสผ่านทุกครั้ง

อย่างไรก็ตามฉันไม่สามารถทราบได้ว่าเซิร์ฟเวอร์ SSH ใช้การกำหนดค่าจากที่ใด

bash-2.05# ssh -V
Sun_SSH_1.1, SSH protocols 1.5/2.0, OpenSSL 0x0090700f

ฉันมีไฟล์ใบรับรองใน / etc / ssh / และ ~ / .ssh / ฉันสามารถค้นหาไฟล์กำหนดค่าได้เพียงไฟล์เดียวสำหรับ SSH และอยู่ใน / etc / ssh / ssh_config แต่ไม่มีข้อมูล (ทุกอย่างถูกใส่ความคิดเห็น)

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

คำตอบ:


17

สมมติว่าคุณหมายถึง public-key-authentication ในระดับผู้ใช้โดย 'ใบรับรอง' และคุณสร้างโดยใช้ssh-keygenกับตำแหน่งเริ่มต้นพวกเขาควรจะอยู่ในตำแหน่งที่ ssh-client ของคุณจะพบพวกเขา ที่สำคัญประกอบไปด้วยส่วนของภาคเอกชนมักจะเก็บไว้ในและเป็นส่วนหนึ่งของประชาชนใน~/.ssh/id_rsa คนสุดท้ายที่จะต้องมีการถ่ายโอนไปยังเซิร์ฟเวอร์ระยะไกลมักจะ~/.ssh/id_rsa.pub~/.ssh/authorized_keys

วิธีที่ง่ายที่สุดในการถ่ายโอนคีย์ไปยังเซิร์ฟเวอร์อื่นกำลังใช้งานssh-copy-idกับเครื่องเป้าหมาย หากคุณใช้ตำแหน่งเริ่มต้นในการสร้างคีย์นี้จะถูกใช้โดยอัตโนมัติ

หมายเหตุนั่น/etc/ssh/ssh_configสำหรับลูกค้า /etc/ssh/sshd_configบนเซิร์ฟเวอร์ที่คุณจะต้องมองไปที่ ในการตั้งค่าเซิร์ฟเวอร์ทั้งสองจะทำหน้าที่เป็นทั้ง ssh-client และ ssh-server ดังนั้นคุณจะต้องดูทั้งไฟล์ที่ปลายทั้งสอง


ทำให้มันทำงานได้ ขอบคุณ. สิ่งเดียวที่ฉันต้องทำเพิ่มเติมคือลูกค้าของฉันฉันต้องระบุพารามิเตอร์ -i (ข้อมูลส่วนตัว) ที่ชี้ไปยังคีย์ส่วนตัว
Chris Dale

2

คุณต้องค้นหากุญแจสาธารณะ ssh สำหรับผู้ใช้ที่จะเป็นผู้ใช้เข้าสู่ระบบสำหรับสคริปต์

ตัวอย่างเช่นถ้าฉันมีเซิร์ฟเวอร์ A และเซิร์ฟเวอร์ B ฉันจะทำสิ่งต่อไปนี้

sudo adduser scriptrunner
...
sudo su - scriptrunner
ssh-keygen
...
cat .ssh/id_rsa.pub
ssh-rsa AAAAB3Nza...... scriptrunner@serverA

จากนั้นทำสิ่งที่คล้ายกันใน ServerB

จากนั้นบน serverA ให้บีบอัดคีย์สาธารณะของผู้ใช้ scriptrunner ของเซิร์ฟเวอร์ B /home/scriptrunner/.ssh/authorized_keys

และทำตรงข้ามกับ serverB (โดยใช้ผู้ใช้ scriptrunner ของ serverA ไปยัง authorized_keys in /home/scriptrunner/.ssh/authorized_keysบน serverB)

จากนั้นคุณควรจะสามารถทำได้ ssh scriptrunner@serverAจากเซิร์ฟเวอร์ B โดยใช้กุญแจและในทางกลับกัน

คุณยังสามารถใช้ssh-copy-idเพื่อทำ bit authorized_keys


1

ในการสร้างการเชื่อมต่อ ssh ด้วยการตรวจสอบคีย์สาธารณะผู้ใช้ที่เริ่มต้นการเชื่อมต่อจะต้องมีคู่คีย์สาธารณะ / ส่วนตัว ในการแจกแจงลินุกซ์หลาย ๆ คีย์เหล่านี้ไม่ได้สร้างโดยค่าเริ่มต้นและจะต้องสร้างขึ้นโดยผู้ใช้เอง (หรือโดยผู้ดูแลระบบในนามของพวกเขา)

หากคุณเข้าสู่ระบบในฐานะผู้ใช้ที่เกี่ยวข้องให้ไปที่โฮมไดเร็กตอรี่ของคุณแล้วรัน

ssh-keygen

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

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

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