ฉันมีเซิร์ฟเวอร์ชื่อgamma
ใช้งานและทำงานอยู่ตลอดเวลา 55.22.33.99
บางครั้งผมก็เชื่อมต่อได้จากที่บ้านซึ่งในกรณีนี้ผมใช้อยู่ IP สาธารณะ บางครั้งฉันเชื่อมต่อกับมันเมื่อฉันที่ทำงานและมากกว่าเด้งแพ็คเก็ตของฉันรอบโดยไม่จำเป็นฉันเชื่อมต่อผ่านทางที่อยู่ IP 192.168.1.100
ท้องถิ่น
ในขณะนี้ฉันให้พวกเขาแยกออกเป็นสองรายการที่แตกต่างกัน ~/.ssh/conf
Host gamma-local
HostName 192.168.1.100
Port 22
User andreas
Host gamma-remote
HostName 55.22.33.99
Port 12345
User andreas
ดังนั้นถ้าฉันอยู่ที่ทำงานสิ่งที่ฉันต้องทำก็คือssh gamma-local
ฉันอยู่ข้างใน; หากฉันที่บ้าน (หรือที่อื่นใดในโลก) ssh gamma-remote
ผมทำงาน
เมื่อเชื่อมต่อกับเซิร์ฟเวอร์ฉันไม่ต้องการพิมพ์ชื่ออื่นขึ้นอยู่กับว่าฉันอยู่ที่ไหนฉันจะทำส่วนนั้นให้โดยอัตโนมัติ ตัวอย่างเช่นในบางกรณีฉันมีสคริปต์อัตโนมัติที่เชื่อมโยงผู้ที่ไม่รู้ว่าฉันอยู่ที่ไหน
มีคำถามที่แก้ปัญหานี้ได้โดยใช้สคริปต์ Bashเพื่อ "ลอง" เพื่อเชื่อมต่อกับโลคัลก่อนและหากไม่ได้เชื่อมต่อให้ลองเชื่อมต่อกับที่อยู่ IP ระยะไกล นี่เป็นสิ่งที่ดี แต่ (1) ดูเหมือนไม่มีประสิทธิภาพ (โดยเฉพาะอย่างยิ่งเนื่องจากบางครั้งคุณต้อง "รอ" เพื่อให้การเชื่อมต่อหมดเวลาเนื่องจากไม่ได้ส่งข้อผิดพลาดกลับมาทันที) และ (2) ต้องใช้ Bash และ lugging รอบสคริปต์
มีวิธีอื่นในการทำสิ่งนี้โดยไม่พึ่งพาการใช้สคริปต์ Bash หรือ "ทดสอบ" เพื่อดูว่าการเชื่อมต่อใช้งานได้หรือไม่
/etc/hosts
ไฟล์ SSH หรือเพื่อให้บรรลุนี้ หรืออาจเป็นวิธีการ "ตรวจจับ" LAN ที่คุณเชื่อมต่ออยู่ในปัจจุบัน?