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トンネルが実際に正常に作成されたかどうかを確認するにはどうすればよいのでしょうか?
トンネルの主な用途は、サーバーと同じLAN内の一部のプリンターにドキュメントを印刷することです。プリンターにはLAN内からのみアクセスできます。トンネルを作成した後、印刷では問題は報告されませんが、物理的にそこにいないため、ドキュメントが実際に印刷されたかどうかを確認できません。
トンネルのおかげで今はLANにいるので、外部IPはサーバーのIPと同じになるはずだと思いました。しかし、実際にはそれらは同じではありません(私はそれらを見つけましたwget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
)。なぜだろうか?トンネルが生きている状態でインターネット上のいくつかのWebサイトに接続するとき、サーバーは、私とサーバー間のトンネルのために、接続中のインターネットWebサイトとの中間点ではありませんか?