Tôi có một máy chủ, được đặt tên gamma
, liên tục hoạt động. Đôi khi tôi kết nối với nó từ ở nhà, trong trường hợp đó tôi sử dụng địa chỉ IP công cộng 55.22.33.99
. Đôi khi, tôi kết nối với nó khi tôi đang làm việc và thay vì trả lại các gói của mình xung quanh một cách không cần thiết, tôi kết nối qua địa chỉ IP cục bộ , 192.168.1.100
.
Hiện tại, tôi đã chia chúng thành hai mục khác nhau trong ~/.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
Vì vậy, nếu tôi đang làm việc, tất cả những gì tôi phải gõ là ssh gamma-local
và tôi đang ở; nếu tôi ở nhà (hoặc bất cứ nơi nào khác trên thế giới), tôi sẽ chạy ssh gamma-remote
.
Khi kết nối với máy chủ, tôi không muốn phải nhập một tên khác tùy thuộc vào vị trí của tôi, tôi muốn phần đó được thực hiện tự động; chẳng hạn, trong một số trường hợp, tôi có các tập lệnh tự động kết nối những người không biết tôi đang ở đâu.
Có một câu hỏi giải quyết vấn đề này bằng cách sử dụng tập lệnh Bash để "thử" kết nối với cục bộ trước và nếu nó không kết nối, hãy thử kết nối với địa chỉ IP từ xa. Điều này là tốt, nhưng (1) có vẻ không hiệu quả (đặc biệt là đôi khi bạn phải "chờ" kết nối hết thời gian vì chúng không luôn gửi lại lỗi ngay lập tức) và (2) yêu cầu Bash và xử lý tập lệnh.
Có một cách khác để đạt được điều này mà không dựa vào việc sử dụng các tập lệnh Bash, cũng không phải "thử nghiệm" để xem kết nối có hoạt động trước không?
/etc/hosts
hoặc tập tin cấu hình SSH để đạt được điều này không? Hoặc có lẽ một số cách "phát hiện" mạng LAN nào bạn đang kết nối?