วิธีการระบุหลายชื่อโฮสต์ / พอร์ตรวมกันใน. ssh / config


10

ฉันมีโน้ตบุ๊กและเวิร์คสเตชั่นหลายตัวที่ดึงและดันจากที่เก็บ Mercurial หลายแห่งบนเซิร์ฟเวอร์ส่วนกลาง ฉันมักจะใช้.ssh/configเพื่อตั้งชื่อแทน:

Host repo-server
HostName server.somedomain
User user143
IdentityOnly yes
IdentityFile ~/hgkey
Port 156

... และตัวเลือกเพิ่มเติมคุณจะได้รับแนวคิด จากนั้นฉันสามารถทำhg push ssh://repo-server//hgroot/someprojectที่เก็บข้อมูลโลคัลทุกแห่งและฉันสามารถเปลี่ยนที่อยู่เซิร์ฟเวอร์และพอร์ตได้ในที่เดียว

สำหรับเวิร์คสเตชั่นนี่ใช้งานได้ดี แต่โน้ตบุ๊กสามารถเข้าถึงเซิร์ฟเวอร์ได้จากภายในเครือข่ายหรือจากภายนอกโดยใช้ที่อยู่อื่นและพอร์ตอื่น มีวิธีใดบ้างที่ฉันสามารถระบุการรวมกันหลายชื่อโฮสต์ / พอร์ตเพื่อให้ SSH ลองตามลำดับโดยอัตโนมัติหรือไม่ ด้วยวิธีนี้ผู้ใช้สามารถผลักและดึงโดยไม่ต้องกังวลเกี่ยวกับที่อยู่ที่ถูกต้อง

(แน่นอนว่าการใช้ VPN จะเป็นทางออกที่ถูกต้องที่สุด)

คำตอบ:


5

ฉันกลัวว่าเป็นไปไม่ได้กับ SSH

คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดยใช้ProxyCommandตัวเลือกของ ssh พร้อมกับสคริปต์ที่กำหนดเองที่สร้างการเชื่อมต่อ TCP ไปยังเซิร์ฟเวอร์ (ใช้ netcat) ขึ้นอยู่กับว่า / สถานที่เชื่อมต่อโน้ตบุ๊กของคุณอย่างไร บางสิ่งบางอย่างตาม:

#!/bin/bash
SSID=$(/sbin/iwgetid wlan0 -r)

case "$SSID" in
net1)
  nc <host1> <port1>
  ;;
net2)
  nc <host2> <port2>
  ;;
*)
  nc <host3> <port3>
  ;;
esac

จากนั้นในของ.ssh/configคุณคุณจะต้องมีสิ่งต่อไปนี้:

Host repo-server
  User user143
  IdentityOnly yes
  IdentityFile ~/hgkey
  ProxyCommand path-to-script

เดาฉันจะเขียนสคริปต์ที่ปรับเปลี่ยนHostNameรายการแล้ว ขอบคุณ.
leoluk

นี้มีลักษณะเฉพาะ Linux .. เช่น / sbin / iwgetid ไม่ปรากฏอยู่ภายใต้ WSL ...
ไมเคิล

-1

อีกทางเลือกหนึ่งคือการตั้งค่าสคริปต์เพื่อส่งต่อพอร์ต ssh 22 ของ ip“ ขวา” ไปยังพอร์ตท้องถิ่นที่ไม่ได้ใช้ของแล็ปท็อปของคุณจากนั้นจึงมี ssh ฉันใช้มันในหลาย ๆ สถานการณ์


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