Я полагаюсь на следующий скрипт, tunnel.sh
написанный другими, чтобы поддерживать ssh-туннель живым:
#!/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
Чтобы создать постоянный туннель SSH, я просто выпускаю tunnel.sh
. Туннель не будет закрыт, пока я не выдам tunnel.sh
снова.
Мне было интересно, как я могу проверить, действительно ли туннель SSH успешно создан?
Мое основное использование туннеля - это печать документов на некоторые принтеры в той же локальной сети, что и сервер, и доступ к принтерам возможен только из локальной сети. После создания туннеля теперь печать не сообщает о каких-либо проблемах, но, поскольку я не нахожусь там физически, я не могу проверить, действительно ли документы были напечатаны.
Я думал, так как я теперь в локальной сети благодаря туннелю, мой внешний IP-адрес должен быть таким же, как у сервера. Но на самом деле они не одинаковы (я узнал их wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
). Интересно, почему? Когда я подключаюсь к какому-либо веб-сайту в Интернете с живым туннелем, разве сервер не является средней точкой между мной и интернет-сайтом в соединении из-за туннеля между мной и сервером?