ssh config สำหรับหลาย hops บวก“ sudo su”
ฉันมีการตั้งค่าเฉพาะที่ต้องใช้ลำดับขั้นตอนนี้:
ssh me@host1
ssh me@host2
sudo su otheruser
ฉันมี:
- คีย์ ssh บนแล็ปท็อปของฉันที่อนุญาตให้ฉัน
ssh me@host1 - คีย์ SSH บน host1
ssh me@host2ที่ช่วยให้ผม
ฉันจะไม่ssh otheruser@host2ได้รับอนุญาตให้
เป้าหมายของฉันคือ: ฉันจะทำให้สิ่งนี้เป็นอัตโนมัติได้หรือไม่? โดยเฉพาะอย่างยิ่งในไฟล์ ~ / .ssh / config ของแล็ปท็อปของฉันดังนั้นฉันสามารถทำได้:
ssh otheruser
... และปล่อยให้ config ดูแลรายละเอียดรวมถึงรหัสผ่านด้วย?
ฉันสามารถได้ 2/3 ของวิธีที่นั่นด้วยการกำหนดค่า ssh ต่อไปนี้:
Host host1
HostName host1.example.com
Host host2
HostName host2.example.com
Host mostly_there
HostName host2.example.com
ProxyJump host1 host2
ข้างต้นช่วยให้ฉันทำได้ssh mostly_thereแต่ฉันยังต้องทำsudo su otheruser
คำตอบ
คุณสามารถใช้สิ่งนี้ใน. ssh / config:
HOST host1
user me
HOST host2
USER me
ProxyCommand ssh host1 -W %h:%p
HOST otheruser
USER me
ProxyCommand ssh host1 -W %h:%p
RemoteCommand sudo su -c '/bin/bash -i' otheruser
ในการเชื่อมต่อกับ host2 กับผู้ใช้อื่น ๆ ผู้ใช้เพียงใช้:
ssh otheruser
ปัจจุบันมีข้อเสียคือไม่ใช่เชลล์แบบโต้ตอบเต็มรูปแบบ แต่สามารถแก้ไขได้โดยการเรียกใช้ที่ดีกว่า /bin/bash -i
หากคุณมีรูทคุณสามารถปรับใช้คีย์สาธารณะของคุณกับคีย์ที่otheruserได้รับอนุญาตและเข้าสู่ระบบโดยไม่ต้องใช้รหัสผ่าน หลังจากเปลี่ยนไปotheruserทำสิ่งนี้:
mkdir -p ~/.ssh
และใส่คีย์สาธารณะของคุณลงใน ~ / .ssh / Authorized_keys ตอนนี้คุณควรจะสามารถเข้าสู่ระบบจากระยะไกลเป็นเพียงแค่การทำotheruserssh otheruser@host