ต้องการการกำหนดค่าเพิ่มเติมสำหรับการส่งต่อ ssh-agent?


21

คู่มือนี้ทำงานได้อย่างยอดเยี่ยมในการอธิบายว่า ssh-agent ทำงานได้อย่างไรในหลาย ๆ ระบบ ฉันต้องการตั้งค่าการส่งต่อตามที่อยู่ในไดอะแกรมชุดสุดท้าย แต่ฉันมีปัญหาในการติดตามขั้นตอนที่ต้องทำ

สำหรับบางเครื่องในเครือข่ายของฉันฉันสามารถ ssh จาก A ถึง B จากนั้น B ถึง C โดยไม่ต้องป้อนรหัสผ่านใบรับรอง อย่างไรก็ตามเครื่องอื่น ๆ ให้ "ไม่สามารถเปิดการเชื่อมต่อกับตัวแทนการตรวจสอบสิทธิ์ของคุณ" (บางครั้ง!) จากนั้นจะไม่ส่งต่อข้อมูลการตรวจสอบสิทธิ์ของฉัน SSHing จากเครื่องหนึ่งไปยังอีกกล่องหนึ่งบนเครือข่ายแจ้งรหัสผ่านส่วนตัวของฉันอีกครั้ง

ฉันไม่ได้สร้างเครื่องเหล่านี้ แต่ฉันสามารถจัดการบางอย่างได้ ฉันไม่ทราบแน่ชัดว่าความแตกต่างระหว่าง boxen ที่ทำงานกับอันที่ไม่ - อาจเป็นปัญหาไฟร์วอลล์การกำหนดค่า ssh / ssh-agent / sshd อะไรและฉันไม่เห็นขั้นตอนใด ๆ - คำแนะนำทีละขั้นตอนเฉพาะสำหรับการส่งต่อลอยรอบ 'สุทธิ ฉันแค่ต้องรู้ว่าจะเริ่มไล่ตามปัญหานี้ที่ไหน

คำตอบ:


23

การส่งต่อตัวแทน Ssh จะต้องได้รับอนุญาตบนไคลเอนต์ ( ForwardAgentตัวเลือกใน~/.ssh/config) และบนเซิร์ฟเวอร์ ( AllowAgentForwardingตัวเลือกในsshd_config) โอกาสที่เครื่องของคุณจะมีการตั้งค่าเริ่มต้นแตกต่างกันสำหรับหนึ่งหรือทั้งสองตัวเลือกเหล่านี้

หากคุณไปที่ A-> B-> C การส่งต่อนั้นไม่จำเป็นในขั้นตอน B-> C (เว้นแต่คุณจะไปที่ C-> D แน่นอน)

เมื่อคุณลงชื่อเข้าใช้ B ให้ตรวจสอบว่าSSH_AUTH_SOCKมีการกำหนดตัวแปรสภาพแวดล้อม ค่าของมันคือวิธีsshรู้วิธีติดต่อตัวแทน

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


ข่าวดี: ขอบคุณที่ชี้นำฉันไปยังกุญแจที่ถูกต้องที่จะมองหา! ข่าวร้าย: เห็นได้ชัดว่านี่เป็นข้อผิดพลาดที่รู้จักใน openssh-server ดูเหมือนว่าจะได้รับการแก้ไขในบางจุด แต่ฉันไม่คิดว่าฉันใช้รุ่นที่เพียงพอในปัจจุบัน - ฉันได้รับ "ตัวเลือกการกำหนดค่าไม่ดี: AllowAgentForwarding" เมื่อฉันพยายามเปิดใช้งาน ดูเหมือนว่าจะปิดอัปเดตการ
โหลด

1
@Coderer: ตั้งแต่ค่าเริ่มต้นของการส่งต่อตัวแทนที่มันควรจะเป็นพอที่จะลบใด ๆเส้นAllowAgentForwarding sshd_config
Gilles 'หยุดความชั่วร้าย'

@Gilles หากมีคนต้องการตั้งตัวแทนส่งต่อสำหรับเซสชันที่มีอยู่ด้วยตนเองพวกเขาจะทำเช่นนั้นได้อย่างไร นี่เป็นความต้องการที่แท้จริงของสคริปต์การจัดสรรที่ใช้กับเครื่องชั่วคราวเช่น AMI ที่AllowAgentForwardingปิดใช้งาน
Andrew De Andrade

@AndrewDeAndrade สำหรับเซสชั่นที่มีอยู่คุณได้ตัดการทำงานของคุณ หากคุณหมายถึงการตั้งค่าการส่งต่อตัวแทนแม้ว่าจะปิดการใช้งานบนเซิร์ฟเวอร์คุณจะต้องส่งต่อซ็อกเก็ตยูนิกซ์ผ่าน TCP; สิ่งนี้ควรทำกับ netcat หรือ socat ทั้งสองด้าน
Gilles 'หยุดความชั่วร้าย'

@Gilles นั่นเป็นข้อสรุปที่ฉันได้มาด้วย ฉันพบว่าคุณสามารถใช้ spiped ซึ่งมีความปลอดภัยมากกว่า แต่ต้องใช้การแลกเปลี่ยนคีย์แบบ symmetric แต่จะง่ายกว่าหลังจากนั้น
Andrew De Andrade

14

ในขณะที่คุณมีคำตอบที่ถูกต้องโดย @Gilles ด้านบนฉันต้องการชี้ให้เห็นว่าAllowAgentForwardingรองรับเฉพาะใน OpenSSH 5.1 เป็นต้นไป

เซิร์ฟเวอร์ OpenSSH ก่อน 5.1 จากสิ่งที่ฉันเห็นในกล่อง RHEL 4u5 ของฉันอนุญาตการส่งต่อตัวแทนโดยค่าเริ่มต้น ดังนั้นหากเซิร์ฟเวอร์ของคุณเก่ากว่า 5.1 และการส่งต่อตัวแทนไม่ทำงานปัญหาน่าจะเกิดขึ้นในไคลเอนต์ ssh เนื่องจากดูเหมือนว่าการส่งต่อจะทำงานกับเครื่องบางอย่างสำหรับคุณดูเหมือนว่า/etc/ssh/ssh_configเป็นการตั้งค่าที่ดี ตรวจสอบ~/.ssh/configเพื่อดูว่ามีข้อยกเว้นใด ๆ ที่ทำเพื่อปิดใช้งานการส่งต่อตัวแทนสำหรับกล่องที่ได้รับผลกระทบ

Ref: http://www.openssh.org/txt/release-5.1


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