Я покладаюся на наступний сценарій, 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/<.*$//'
). Цікаво, чому? Коли я підключаюсь до якогось веб-сайту в Інтернеті з тунелем, чи не є сервер посередині між мною та веб-сайтом в Інтернеті через тунель між мною та сервером?