Có và không.
Đầu tiên, không. Không có gì bạn có thể đặt trong tệp ~ / .ssh / config của mình, điều này sẽ khiến các cài đặt khác nhau hoạt động dựa trên các yếu tố bên ngoài như mạng bạn đang ở trên hoặc nếu một tệp tồn tại, v.v. Tệp cấu hình của SSH là một tệp tĩnh.
Bây giờ là có. Bạn có thể "hack" một cái gì đó. Nó có thể sẽ không đẹp một cách khó tin, nhưng nó có thể hoạt động.
Hãy xem xét cách ProxyCommand hoạt động. Nó thực thi một dòng lệnh và thay thế trong một số chuỗi nhất định, kiểu printf. Dòng lệnh đó là nơi bạn có thể đặt thông tin đăng nhập của bạn. Ví dụ: bạn có thể có một cái gì đó như thế này trong máy tính xách tay của bạn để sử dụng tại văn phòng:
host athome
ProxyCommand ssh -x -a -q gateway nc athome.dyndns.org 22
Lệnh khởi chạy một ssh
lệnh kết nối với gateway
và trên máy chủ đó ra mắt netcat
để kết nối với thực tế Nơi Đến. Chà, thay vì chạy ssh, bạn có thể sử dụng tập lệnh shell. Ví dụ, với điều này trong của bạn .ssh/config
tập tin:
host athome
ProxyCommand bin/customconnect athome.dyndns.org
Bạn có thể tạo một ~/bin/customconnect
kịch bản:
#!/bin/sh
if /sbin/ifconfig -a | grep -q 'inet 192\.168\.'; then
nc $1 22
else
ssh -x -a -q gateway nc $1 22
fi
Sau đó, giả sử mạng của bạn ở nhà bắt đầu bằng 192.168
và mạng của bạn tại văn phòng thì không, ProxyCommand thích hợp sẽ được chọn theo kịch bản .
Nếu bạn muốn chức năng động khác, như chọn một tên máy chủ khác dựa trên mạng, rõ ràng bạn cũng có thể thêm tên này vào tập lệnh.
Lưu ý rằng giải pháp này không phải là không có một số chi phí. Thông thường, SSH khởi chạy ProxyCommand của bạn trực tiếp. Nếu bạn sử dụng giải pháp này, sẽ có thêm một quy trình chơi cho mỗi kết nối khi ssh khởi chạy một shell, từ đó khởi chạy một quy trình khác.