Saya mengandalkan skrip berikut yang tunnel.sh
ditulis oleh orang lain untuk menjaga terowongan ssh tetap hidup:
#!/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
Untuk membuat terowongan ssh persisten, saya hanya mengeluarkan tunnel.sh
. Terowongan tidak akan ditutup sampai saya mengeluarkan tunnel.sh
lagi.
Saya bertanya-tanya bagaimana saya bisa memverifikasi apakah terowongan ssh memang berhasil dibuat?
Penggunaan utama saya dari terowongan adalah untuk mencetak dokumen ke beberapa printer di LAN yang sama dengan server, dan printer hanya dapat diakses dari dalam LAN. Setelah membuat terowongan, sekarang pencetakan tidak melaporkan masalah, tetapi karena saya tidak ada secara fisik di sana, saya tidak dapat memeriksa apakah dokumen sudah dicetak.
Saya pikir karena saya sekarang di LAN berkat terowongan, IP eksternal saya harus sama dengan server. Tetapi sebenarnya mereka tidak sama (saya menemukannya pada wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
). Kenapa ya? Ketika saya terhubung ke beberapa situs web di internet dengan terowongan hidup, bukankah server titik tengah antara saya dan situs web internet dalam koneksi, karena terowongan antara saya dan server?