Tunnel การเชื่อมต่อ ssh ผ่านเครื่องระดับกลางในคำสั่งเดียว


10

มีวิธีในคำสั่งเดียวในการสร้างการเชื่อมต่อ ssh จากคอมพิวเตอร์ A ผ่านคอมพิวเตอร์ B ไปยังคอมพิวเตอร์ C เช่นนั้นฉันสามารถเข้าถึงเชลล์ในคอมพิวเตอร์ C ได้หรือไม่

รอยย่น (ซึ่งดูเหมือนจะตัดออกเพียงแค่ส่งต่อการเชื่อมต่อ ssh โดยใช้ตัวเลือก -L) คือฉันมีรหัสผ่านไปยังบัญชีในคอมพิวเตอร์ B และบัญชีในคอมพิวเตอร์ B ได้รับอนุญาตให้เชื่อมต่อกับบัญชีในคอมพิวเตอร์ C แต่ ฉันไม่มีรหัสผ่านสำหรับบัญชีบนคอมพิวเตอร์ C


คำตอบ:


8

ฉันเข้าใจว่าคุณต้องการเพียงเข้าสู่ระบบคอมพิวเตอร์ C ไม่ใช่เจาะอุโมงค์อะไรจาก A ถึง C ดังนั้นสิ่งนี้ควรทำเคล็ดลับ:

ssh -t computer-b "ssh computer-c"

คุณอาจต้องป้อนรหัสผ่านสองครั้งครั้งแรกสำหรับคอมพิวเตอร์ B และจากนั้นสำหรับคอมพิวเตอร์ C แต่สามารถหลีกเลี่ยงได้โดยใช้การตรวจสอบคีย์คู่ของ ssh


1
ขอบคุณ - มันใช้งานได้! หากฉันกล้าที่จะติดตามผล ความคิดใดที่ฉันสามารถสแกนไฟล์จาก A ถึง C ในคำสั่งเดียว?
สติ

นั่นเป็นเรื่องยุ่งยากเล็กน้อย มันสามารถทำได้โดยการเพิ่ม tar ลงในมิกซ์ แต่ถ้ามันมีเพียงไฟล์เดียวและคอมพิวเตอร์ B มีพื้นที่ดิสก์ที่จะเก็บไว้ในขณะนั้นมันง่ายกว่ามากในการคัดลอกมันในสองขั้นตอน
af

คุณสามารถทำได้สามครั้ง! ssh -t computer-b "ssh -t computer-c 'ssh computer-d'": D
gak

0

คุณอาจต้องการใช้ ProxyCommand ของ SSH: http://benno.id.au/blog/2006/06/08/ssh_proxy_command


ฉันไม่สามารถหาวิธีที่จะทำให้งานนี้เพราะฉันไม่มีรหัสผ่านสำหรับคอมพิวเตอร์ C และดูเหมือนว่าวิธีการนี้จะต้องใช้มัน เปิดให้ข้อเสนอแนะ แต่เป็นวิธีการนี้จะดูสง่างามมากขึ้น
สติ

0

หากคุณใช้คีย์ ssh คุณสามารถสร้างรหัสใหม่สำหรับเครื่อง B และใช้การเชื่อมต่อจาก A ถึง B บนเครื่อง B คุณสามารถเพิ่ม

command="ssh C" ssh-....

ใน~/.ssh/authorized_keysไฟล์ นั่นหมายความว่าเมื่อใดก็ตามที่คุณเชื่อมต่อ B ด้วยคีย์ ssh มันจะดำเนินการssh Cคำสั่ง

ฉันไม่รู้ว่ามันใช้กับ scp ได้ไหม


0

ใช้ ProxyCommand

man ssh_configดู ProxyCommandผมขอแนะนำการใช้ ลองใช้สถานการณ์เดิมของคุณ:

  • คอมพิวเตอร์ A (คอมพิวเตอร์ของคุณ)
  • คอมพิวเตอร์ B (ชื่อโฮสต์พร็อกซี)
  • คอมพิวเตอร์ C (สามารถเข้าถึงได้ผ่าน SSH จากคอมพิวเตอร์ B เท่านั้น)

แก้ไข~/.ssh/configด้วยเนื้อหาดังต่อไปนี้

Host computerb
    HostName <hostname or IP of Computer B>

Host computerc 192.168.35.*
    ProxyCommand ssh computerb nc -w 180 %h %p

ตอนนี้คุณจะสามารถเข้าถึงคอมพิวเตอร์ C. ได้อย่างโปร่งใส

ssh computerc

ข้อดีของวิธีนี้

ปลอดภัยยิ่งขึ้น

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

ตรงกับหลายปลายทาง

Hostหนึ่งสามารถตรงกับเครื่องคอมพิวเตอร์หลายเครื่องโดยใช้ปลายทาง คอมพิวเตอร์เครื่องเดียวหรือคอมพิวเตอร์ใด ๆ ที่อยู่ในเครือข่ายเฉพาะ (เช่น192.168.35.0/24ในตัวอย่างด้านบน) เพื่อเชื่อมต่อผ่านทางคอมพิวเตอร์ B. นอกจากนี้ยังทำหน้าที่เป็นนามแฝง

ssh 192.168.35.27

ในตัวอย่างข้างต้นมันจะพร็อกซีผ่านคอมพิวเตอร์ B เพื่อไปยังที่อยู่ IP

พร็อกซี่โซ่เดซี่

การใช้วิธีนี้คุณสามารถเชื่อมโยงห่วงโซ่เดซี่กับผู้รับมอบฉันทะอัตโนมัติได้มากเท่าที่จำเป็น เช่นคุณสามารถเพิ่มComputer Dซึ่งสามารถเข้าถึงได้จาก Computer C เท่านั้นและจะทำงานได้อย่างโปร่งใส

Host computerd
    ProxyCommand ssh computerc nc -w 180 %h %p

ssh computerdจะพร็อกซีอัตโนมัติผ่านคอมพิวเตอร์ C และคอมพิวเตอร์ B ในssh_configตัวอย่างด้านบน


ฉันใช้ProxyJumpแทน ProxyCommand และใช้งานได้ดี ดูเหมือนว่าตอนนี้มีตัวเลือกเพิ่มเติม
fgiraldeau
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.