Tôi dựa vào kịch bản sau đây tunnel.sh
được viết bởi người khác để giữ cho đường hầm ssh tồn tại:
#!/bin/bash
export SSH_HOST=tim@server
if [ ! -f /tmp/.tunnel ]
then
echo "Creat SSH tunnel"
ssh -f -D 9999 $SSH_HOST "if [ -f ~/.tunnel ]; then rm ~/.tunnel; fi; while [ ! -f ~/.tunnel ]; do echo > /dev/null; done" &
touch /tmp/.tunnel
else
echo "Close SSH tunnel"
ssh $SSH_HOST "touch ~/.tunnel"
rm /tmp/.tunnel
fi
exit
Để tạo một đường hầm ssh liên tục, tôi chỉ cần phát hành tunnel.sh
. Đường hầm sẽ không được đóng lại cho đến khi tôi phát hành tunnel.sh
lại.
Tôi đã tự hỏi làm thế nào tôi có thể xác minh nếu đường hầm ssh thực sự được tạo thành công?
Công dụng chính của đường hầm là in tài liệu cho một số máy in trong cùng mạng LAN với máy chủ và máy in chỉ có thể được truy cập từ bên trong mạng LAN. Sau khi tạo một đường hầm, bây giờ in không báo cáo bất kỳ vấn đề nào, nhưng vì tôi không ở đó, tôi không thể kiểm tra xem các tài liệu đã thực sự được in chưa.
Tôi nghĩ rằng vì bây giờ tôi đang ở trong mạng LAN nhờ vào đường hầm, IP bên ngoài của tôi phải giống với máy chủ. Nhưng thật ra chúng không giống nhau (tôi đã tìm ra chúng wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
). Tôi tự hỏi tại sao? Khi tôi kết nối với một số trang web trên internet với đường hầm còn sống, không phải máy chủ là điểm giữa giữa tôi và trang web internet trong kết nối, do đường hầm giữa tôi và máy chủ?