สำหรับการใช้ครั้งเดียวหรือต่อเนื่องเป็นครั้งคราวสถานการณ์วิธีการของ 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 แต่ฉันเชื่อว่ามีสิ่งที่เทียบเท่า