คำตอบของสโนว์บอลช่วยได้มาก อย่างไรก็ตามฉันได้ทำการแก้ไขคำสั่งและต้องการอธิบายวิธีการทำงาน รับสถานการณ์นี้:
ssh ssh
A -------> B -------> C
^ ^
using A's using B's
ssh key ssh key
แก้ไข~/.ssh/config
ไฟล์ของคุณและเพิ่มโฮสต์B
ที่คุณต้องการข้ามไปเพียงแค่คุณกำหนดค่าโฮสต์:
Host B
User myusername
HostName b.mycompany.com
จากนั้นคุณเพิ่มโฮสต์C
ที่คุณต้องการท้าย:
Host C
User myusername
HostName c.intranet.mycompany.com
ProxyCommand ssh -T -q -o 'ForwardAgent yes' B 'ssh-add -t 1 && nc %h %p'
สังเกตProxyCommand
ที่:
ssh -T -q
บ่งชี้ว่าไม่ควรจัดสรรหลอก -TTY ( -T
) และจะเงียบ ( -q
);
- ครั้งหนึ่งในการกระโดดโฮสต์
B
เราเพิ่มกุญแจลงในคีย์ SSH ของการA
ผ่านssh-add
;
- ซึ่งทำงานได้เพียงเพราะเราส่งตัวแทน SSH
-o 'ForwardAgent yes'
ใช้
ssh-add -t 1
ระบุว่าฉันต้องการเพิ่มคีย์สำหรับ 1 วินาทีที่จำเป็นในการตรวจสอบสิทธิ์กับโฮสต์ C สุดท้ายเท่านั้น
- และในที่สุดก็
nc %h %p
เริ่มการnetcat
เชื่อมต่อกับโฮสต์สุดท้าย%h
ที่พอร์ต%p
(ทั้งสองจะถูกกรอกโดย SSH ตามข้อมูลใน~/.ssh/config
ไฟล์)
หากคุณต้องการระบุคีย์ที่กำหนดเองที่B
จะใช้คุณสามารถทำได้โดยการแก้ไขssh-add
ส่วน:
Host C
User myusername
HostName c.intranet.mycompany.com
ProxyCommand ssh -T -q -o 'ForwardAgent yes' B 'ssh-add -t 1 ~/.ssh/mykey && nc %h %p'