Chờ cho đến khi đường hầm SSH (ssh -w) được thiết lập trước khi chạy lệnh


7

Khi sử dụng SSH VPN đường hầm (tùy chọn -w), có cách nào để biết khi nào đường hầm thực sự hoạt động không? Tôi muốn sử dụng điều này trong một kịch bản tự động thiết lập đường hầm bằng cách chạy ssh -w sau đó chạy ifup [1].

Tùy chọn -f không giúp ích vì nó trả về sau khi kết nối với máy chủ nhưng trước khi đường hầm kết thúc. Ngủ trong vài giây không hoạt động, nhưng nó chỉ cảm thấy quá hack.

Tùy chọn LocalCommand dường như hoạt động, ví dụ:

ssh -w 0:1 "-oLocalCommand=ifup tun0" "-oPermitLocalCommand=yes" myserver.example.org true

Tuy nhiên, trang man nói: "Lệnh được chạy đồng bộ và không có quyền truy cập vào phiên của ssh (1) đã sinh ra nó." Yêu cầu trên có được đảm bảo để hoạt động không hay chỉ là may mắn khi LocalCommand được thực thi sau khi đường hầm được thiết lập?

Quan trọng hơn, có một cách tiêu chuẩn để sử dụng ssh -w trong các tập lệnh?

[1] Tôi đang ở Fedora, ifup hoạt động vì tôi đã thiết lập /etc/sysconfig/network-scripts/ifcfg-tun0/etc/sysconfig/network-scripts/route-tun0

Câu trả lời:


1

Vì vậy, tôi thấy có hai câu hỏi ở đây: 1) Làm thế nào để chờ đường hầm thực sự lên, hoặc làm thế nào để biết nó thực sự lên. 2) Nếu có bất kỳ cách tiêu chuẩn nào để định cấu hình đường hầm ssh trong Fedora.

Về 1): Cá nhân tôi sẽ chỉ sử dụng một cái gì đó như:

timeout=2 # Wait for two seconds for a reply.
ip=192.168.0.1 # Use IP address assigned to tunnel endpoint.
while ! ping -W "$timeout" -c 1 "$ip" &>/dev/null; do
  echo "Waiting for tunnel to be up..."
  sleep 0.5
done
echo "Tunnel is up."

Bạn có thể nhận được fancier bằng cách sử dụng một forvòng lặp với số lần thử được định cấu hình hoặc chuyển một cái gì đó giống như -I tun0lệnh ping để buộc sử dụng thiết bị điều chỉnh.

Một lý do tôi thích cách tiếp cận này là thực tế là việc tự mở đường hầm không cần thiết có nghĩa là việc giao tiếp sẽ xảy ra. Có thể bị mất gói, quy tắc iptables, lỗi cấu hình tuyến đường, ... Tôi sẽ cẩn thận về việc đảm bảo tập lệnh sẽ bị giết nếu bị treo và đảm bảo tất cả các lệnh yêu cầu đường hầm có chiến lược hết thời gian / thử lại.

Giới thiệu về 2): Tôi không biết bất kỳ cơ chế ngoài hộp nào để định cấu hình các đường hầm ssh trong bất kỳ bản phân phối nào. Điều này không có nghĩa là chúng không tồn tại. Trong quá khứ, tôi đã sử dụng autossh .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.