ssh config สำหรับหลาย hops บวก“ sudo su”

Oct 16 2020

ฉันมีการตั้งค่าเฉพาะที่ต้องใช้ลำดับขั้นตอนนี้:

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

คำตอบ

1 jeb Oct 20 2020 at 06:17

คุณสามารถใช้สิ่งนี้ใน. 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

ArkadiuszDrabczyk Oct 16 2020 at 18:10

หากคุณมีรูทคุณสามารถปรับใช้คีย์สาธารณะของคุณกับคีย์ที่otheruserได้รับอนุญาตและเข้าสู่ระบบโดยไม่ต้องใช้รหัสผ่าน หลังจากเปลี่ยนไปotheruserทำสิ่งนี้:

mkdir -p ~/.ssh

และใส่คีย์สาธารณะของคุณลงใน ~ / .ssh / Authorized_keys ตอนนี้คุณควรจะสามารถเข้าสู่ระบบจากระยะไกลเป็นเพียงแค่การทำotheruserssh otheruser@host