ฉันจะระบุโลคัลพอร์ตเมื่อสร้างการเชื่อมต่อ SSH ได้อย่างไร


13

ฉันมีเซิร์ฟเวอร์สองโฮสต์ใน IDC ฉันสามารถใช้พอร์ต 20/21/22/23/3389 / 33101-33109 เพื่อสร้างการเชื่อมต่อระหว่างสองเซิร์ฟเวอร์ อุปกรณ์เครือข่าย IDC จะปิดกั้นแพ็กเก็ตอื่น ๆ ที่มีพอร์ตต้นทางหรือปลายทางไม่อยู่ในรายการ / ช่วง 20/21 / 22/23/80/3389 / 33101-33109 แต่พอร์ตต้นทางของ SSH นั้นสุ่ม

ใช้คำสั่ง หนึ่งสามารถระบุพอร์ตระยะไกลได้อย่างง่ายดายssh username@server -p remote_port

ดังนั้นจะมีsshพารามิเตอร์คำสั่งหรือวิธีอื่นเพื่อระบุพอร์ตต้นทางในเครื่องเพื่อให้ฉันสามารถใช้ตัวอย่างเช่นพอร์ต 33101 เพื่อสร้างการเชื่อมต่อ SSH?

โครงสร้างเครือข่ายของฉันเป็นเช่นนี้:
โทโพโลยีเครือข่าย

คำตอบ:


26

คุณไม่สามารถระบุพอร์ตต้นทางสำหรับไคลเอ็นต์ ssh

แต่คุณสามารถใช้ncเป็นพร็อกซีเช่นนี้:

ssh -p 33101 -o 'ProxyCommand nc -p 33101 %h %p' $SERVER_2

จากฉันสามารถตั้งค่าพอร์ตแหล่งที่มาสำหรับ SSH บนเซิร์ฟเวอร์ unbuntu? (ใน ServerFault)


ขอบคุณมันกระทะ!
fajin yu

2

สำหรับการใช้ครั้งเดียวหรือต่อเนื่องเป็นครั้งคราวสถานการณ์วิธีการของ ProxyCommand นั้นเป็นวิธีที่สะดวกมาก

ในทางกลับกันหากคุณต้องการการเชื่อมต่อหลายอย่างพร้อมกันหรือบางทีคุณอาจจำเป็นต้องใช้คำสั่งนั้นบ่อยครั้งสำหรับการทำงานประจำวันคุณอาจพิจารณาตั้งค่ากฎการแปลที่อยู่เครือข่าย (NAT) บนเซิร์ฟเวอร์ของคุณแทน

สิ่งนี้ต้องการrootการเข้าถึงsuperuser (โดยทั่วไป) บนเซิร์ฟเวอร์ของคุณเพื่อใช้กฏ NAT เดียวก่อน โปรดทราบว่าอาจไม่ได้รับอนุญาต (หรือมีผลบังคับใช้) เพื่อใช้กฎ NAT แม้ว่าคุณจะมีสิทธิ์เข้าถึง superuser หาก "เซิร์ฟเวอร์" ของคุณนั้นเป็นคอนเทนเนอร์จริง ๆ (เช่น Docker One) แทนที่จะเป็นเครื่อง

เมื่อพูดถึงระบบ Linux ทั่วไปกับiptablesชุดกฎ NAT ที่จะใช้กับเซิร์ฟเวอร์ 1 ของคุณสำหรับกรณีตัวอย่างของคุณอาจเป็นดังนี้:

iptables -t nat -I POSTROUTING -d <server2-ip-address> -p tcp --dport <server2-port> -j SNAT --to :33101-33109

คำสั่งนั้นสั่งให้เคอร์เนล Linux ทำการเชื่อมต่อไปยังพอร์ตserver2-portของserver2-ip-addressเพื่อออกไปข้างนอกโดยใช้พอร์ตต้นทางที่เลือกภายในช่วง 33101-33109 ที่มีอยู่ในขณะนั้น

เมื่อกฎนั้นเข้ามาคุณเชื่อมต่อกับเซิร์ฟเวอร์ 2 ของคุณตามปกติ:

ssh username@server2 -p remote_port

และคุณสามารถใช้sshคำสั่งเดียวกันนี้ได้พร้อมกันหลาย ๆ ครั้งตามที่คุณต้องการตราบใดที่มีพอร์ตที่พร้อมใช้งานในช่วงที่ระบุในกฎ NAT

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

หากต้องการยกเลิกกฎ NAT คำสั่งจะเหมือนกันยกเว้นสำหรับตัวเลือกในสถานที่ของ-D-I

หากต้องการให้กฎ NAT ถูกนำไปใช้โดยอัตโนมัติในขณะบู๊ตขึ้นอยู่กับว่าคุณมีการกระจาย Linux ในเซิร์ฟเวอร์ของคุณหรือไม่

ฉันไม่มีประสบการณ์กับระบบที่เหมือน BSD แต่ฉันเชื่อว่ามีสิ่งที่เทียบเท่า

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