Opieram się na następującym skrypcie tunnel.sh
napisanym przez innych, aby utrzymać tunel ssh przy życiu:
#!/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
Aby stworzyć trwały tunel ssh, po prostu wydaje tunnel.sh
. Tunel nie zostanie zamknięty, dopóki nie wydam tunnel.sh
ponownie.
Zastanawiałem się, jak mogę sprawdzić, czy tunel ssh rzeczywiście został pomyślnie utworzony?
Moim głównym zastosowaniem tunelu jest drukowanie dokumentów na niektórych drukarkach w tej samej sieci LAN co serwer, a do drukarek można uzyskać dostęp tylko z sieci LAN. Po utworzeniu tunelu drukowanie teraz nie zgłasza żadnego problemu, ale ponieważ nie ma go fizycznie, nie mogę sprawdzić, czy dokumenty rzeczywiście zostały wydrukowane.
Pomyślałem, że skoro jestem teraz w sieci LAN dzięki tunelowi, moje zewnętrzne IP powinno być takie samo jak serwera. Ale tak naprawdę nie są takie same (dowiedziałem się o nich wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
). Zastanawiam się dlaczego? Kiedy łączę się z jakąś witryną w Internecie z tunelem żywym, czy serwer nie jest punktem środkowym między mną a witryną internetową w związku z powodu tunelu między mną a serwerem?