ฉันยังใหม่กับปุ่ม ssh ทุกคนสามารถอธิบายวิธีการssh-agent bash
และssh-add
ผลงาน?
ฉันต้องเข้าใจภายในของมันในอนาคต
ฉันยังใหม่กับปุ่ม ssh ทุกคนสามารถอธิบายวิธีการssh-agent bash
และssh-add
ผลงาน?
ฉันต้องเข้าใจภายในของมันในอนาคต
คำตอบ:
ตัวแทนเป็นโปรแกรมที่ช่วยให้คีย์ของคุณในหน่วยความจำเพื่อที่คุณจะต้องปลดล็อคพวกเขาครั้งเดียวแทนทุกครั้ง ssh-agentทำสิ่งนี้สำหรับคีย์ SSH
วิธีการปกติสำหรับการเริ่มต้นssh-agentคือ:
eval `ssh-agent`
- สิ่งนี้จะเรียกใช้ตัวแทนในพื้นหลังและตั้งค่าตัวแปรสภาพแวดล้อม apropriate สำหรับอินสแตนซ์เชลล์ปัจจุบัน
( ssh-agentเมื่อเริ่มต้นโดยไม่มีอาร์กิวเมนต์คำสั่งเอาต์พุตจะถูกตีความโดยเชลล์ของคุณ)
exec ssh-agent bash
- เริ่มต้นอินสแตนซ์ใหม่ของbash
เชลล์โดยแทนที่เชลล์ปัจจุบัน
(ด้วยอาร์กิวเมนต์อย่างน้อยหนึ่งตัวssh-agentจะไม่แสดงผลใด ๆ แต่เริ่มคำสั่งที่ระบุ: ในกรณีนี้bash
เชลล์ แต่ในทางเทคนิคแล้วอาจเป็นอะไรก็ได้)
บางครั้งอาจต้องการวิธีที่สองเนื่องจากจะฆ่า ssh-agent โดยอัตโนมัติเมื่อคุณปิดหน้าต่างเทอร์มินัล (เมื่อเริ่มต้นด้วยeval
เอเจนต์จะยังคงทำงานอยู่ แต่ไม่สามารถเข้าถึงได้)
อย่างไรก็ตามสิ่งนี้จะเริ่มต้นตัวแทนที่ว่างเปล่าเท่านั้น ในการทำให้มีประโยชน์จริง ๆ คุณต้องใช้ssh-addซึ่งปลดล็อกคีย์ของคุณ (โดยปกติ~/.ssh/id_*
) และโหลดเข้าสู่เอเจนต์เพื่อให้เข้าถึงการเชื่อมต่อsshหรือsftpได้
นอกจากนี้คุณอาจต้องการเพิ่มปุ่มบางปุ่มเมื่อเริ่มเซสชัน
แก้ไข~/.bashrc
ไฟล์ของคุณและเพิ่ม:
ssh-add &>/dev/null || eval `ssh-agent` &>/dev/null # start ssh-agent if not present
[ $? -eq 0 ] && { # ssh-agent has started
ssh-add ~/.ssh/your_private.key1 &>/dev/null # Load key 1
ssh-add ~/.ssh/your_private.key2 &>/dev/null # Load key 2
}
ตรวจสอบกุญแจด้วย ssh-add -l
คุณสามารถหยุดเซสชัน ssh-agent ปัจจุบันด้วย ssh-agent -k
สิ่งที่ควรรู้เกี่ยวกับ ssh-agent และ. bashrc นั้นไม่ได้โหลดกุญแจมากเกินไป จำนวนความพยายามเริ่มต้นสำหรับ ssh daemon ถูก จำกัด ไว้ที่ 6 ซึ่งสามารถแก้ไขได้/etc/ssh/sshd_config
ด้วยMaxAuthTries
ค่า
ssh-add
ด้วย "&" คืออะไร คุณสมมติว่าไฟล์ไพรเวตคีย์ไม่มีการป้องกันหรือไม่?