SSH ForwardAgent หลายฮ็อพ


15

ฉันกำลังค้นหาวิธีแก้ไขปัญหาต่อไปนี้ใน 2 ชั่วโมงที่ผ่านมาโดยไม่มีโชค

การพัฒนา:

ฉันใช้การรับรองความถูกต้อง publickey เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ของฉัน ฉันใช้การส่งต่อ ssh-agent เพื่อไม่ต้องจัดการกุญแจสาธารณะ / ส่วนตัว

A, B and Cสมมติว่าผมมีเซิร์ฟเวอร์

LOCAL ---> A ---> Bนี้ทำงานได้ดีมากถ้าฉันเชื่อมต่อจาก

LOCAL ---> A ---> Cนอกจากนี้ยังทำงานได้ดีมากถ้าผมทำ

ตอนนี้ถ้าฉันลองLOCAL ---> A ---> B ---> CSSH ไม่สามารถเชื่อมต่อB to Cได้

น่าสังเกต: ฉันเชื่อมต่อกับเซิร์ฟเวอร์ A เป็นสภาพคล่องในขณะที่ฉันเชื่อมต่อกับเซิร์ฟเวอร์ B ในฐานะรูท การเชื่อมต่อกับเซิร์ฟเวอร์ B เนื่องจากสภาพคล่องช่วยแก้ไขปัญหาได้ แต่นี่ไม่ใช่ตัวเลือกสำหรับฉัน

ตามคำแนะนำของผู้ใช้ฉันใช้ssh -Aแต่ละครั้งเพื่อให้แน่ใจว่าตัวแทนการส่งต่อถูกเปิดใช้งาน

ฉันพบหนึ่งคำถามที่คล้ายกันโดยไม่มีคำตอบที่นี่: เป็นไปได้หรือไม่ที่จะส่งต่อเอเจนต์ ssh-agent ผ่านหลายฮ็อป?

ตามที่ @Zoredache ที่นี่: /server//a/561576/45671ฉันแค่ต้องปรับการกำหนดค่าไคลเอนต์ของฉันในแต่ละระบบกลาง ซึ่งฉันเชื่อว่าฉันทำ


พิจารณาใช้การProxyCommandกระโดด (ดังอธิบายที่นี่ ) แทนที่จะส่งต่อเอเจนต์ SSH สำหรับวิธีการของคุณคุณจะต้องไว้วางใจเครื่องทั้งหมดในห่วงโซ่เพราะพวกเขาสามารถ (ab) ใช้คีย์ส่วนตัวของคุณ ฉันชอบวิธี ProxyCommand ดีกว่ามากเพราะการตรวจสอบโฮสต์ที่รู้จักเสร็จแล้วในเครื่องและยิ่งกว่านั้นคุณสามารถตั้งค่าโซ่ในการกำหนดค่า SSH ของคุณเพื่อให้คุณสามารถใช้คำสั่งเดียวเพื่อเชื่อมต่อกับ C.
gertvdijk

ฉันโชคร้ายที่ไม่สามารถใช้ proxyCommand ได้ แม้จะมีข้อควรพิจารณาด้านความปลอดภัยฉันต้องใช้ forwardAgent จริงๆ
สภาพคล่อง

@liquidity ฉันสามารถถามคุณว่าทำไมคุณไม่ต้องการใช้ proxyCommand ฉันมีปัญหาเดียวกันและฉันเข้าใจว่า proxyCommand มีความปลอดภัยมากกว่า ดังนั้นฉันจึงคิดว่าจะใช้อันไหน ..
grep

คำตอบ:


13

หากต้องการให้ตัวแทนส่งต่อทำงานผ่านหลายฮ็อพคุณเพียงแค่ต้องปรับการกำหนดค่าไคลเอนต์ของคุณในแต่ละระบบขั้นกลางเพื่อให้ตัวแทนส่งต่อ

อาจเป็นเพียงแค่ให้แน่ใจว่าคุณ/etc/ssh/ssh_configได้กำหนดค่านี้ แต่ถ้าคุณมีการกำหนดค่าต่อลูกค้า~/.ssh/configคุณอาจต้องปรับการตั้งค่าเหล่านั้นด้วย

Host *
    ForwardAgent yes

คุณสามารถดูว่าตัวแทนการส่งต่อที่เกิดขึ้นหรือถ้ามีข้อผิดพลาดถ้าคุณเพียงแค่เพิ่ม-vตัวเลือก

$ ssh -v issc@server1
OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /home/zoredache/.ssh/config
...
debug1: Requesting authentication agent forwarding.
debug1: Sending environment.
Linux server1 3.11-0.bpo.2-amd64 #1 SMP Debian 3.11.8-1~bpo70+1 (2013-11-21) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Dec 15 20:39:44 2013 from 10.2.4.243
issc@server1:~$

ตรวจสอบว่าคุณมีชุดตัวแปรสภาพแวดล้อมที่ถูกต้อง

issc@server1:~$ export | grep SSH_AUTH
declare -x SSH_AUTH_SOCK="/tmp/ssh-7VejOmKtNv/agent.57943"

4
ควรกล่าวถึงการตั้งค่าสถานะ -A เพื่อ ssh เป็นทางเลือกที่รวดเร็วและสกปรกสำหรับตัวเลือก ssh_config หรือ ~ .ssh / config -A [e] เชื่อมต่อไปยังการเชื่อมต่อตัวแทนการตรวจสอบสิทธิ์
dmourati

1
ในแต่ละขั้นตอนคุณสามารถใช้ssh-add -lเพื่อระบุรายการคีย์ที่ ssh คิดว่าสามารถทำได้ผ่านตัวแทนของคุณ ตรวจสอบให้แน่ใจว่าคุณได้ส่งต่อในแต่ละการเชื่อมต่อ!
MikeyB

ขอบคุณ! โปรดทราบด้วยว่าหากทุกอย่างถูกต้องคุณจะไม่ต้องเริ่มต้น ssh-agent ด้วยตนเองบนเซิร์ฟเวอร์สุดท้าย มันจะเริ่มต้นโดยอัตโนมัติหากคุณเห็นบรรทัดRequesting authentication agent forwarding.ในผลลัพธ์การดีบักของคุณ หากคุณพยายามที่.bash_profileจะเริ่มต้น ssh-agent ให้ลบออกจากที่นั่นมิฉะนั้นตัวแทนของคุณจะเริ่มต้นอีกครั้งโดยไม่มีตัวตนใด ๆ
2upmedia
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.