SSHでFirewall越え
Firewallの内側にあるネットワークから外部のホストにSSHで繋ぐ必要があったのでconnect.cというソフトウェアを使ってFirewallを越えた。
1.ソースをダウンロードし、コンパイル。
connect.cのソースをダウンロードし、コンパイルした。その後にコンパイルされたconnectを~/binにインストールした。
[yuanying@kiriko src]$ export http_proxy=http://path.to.proxy:8080 [yuanying@kiriko src]$ wget http://www.taiyo.co.jp/~gotoh/ssh/connect.c --15:40:32-- http://www.taiyo.co.jp/~gotoh/ssh/connect.c => `connect.c.1' path.to.proxy をDNSに問いあわせています... 172.16.71.5 path.to.proxy|172.16.71.5|:10080 に接続しています... 接続しました。 Proxy による接続要求を送信しました、応答を待っています... 301 Moved Permanently 場所: http://zippo.taiyo.co.jp/~gotoh/ssh/connect.c [続く] --15:40:33-- http://zippo.taiyo.co.jp/~gotoh/ssh/connect.c => `connect.c.1' path.to.proxy|172.16.71.5|:10080 に接続しています... 接続しました。 Proxy による接続要求を送信しました、応答を待っています... 200 OK 長さ: 88,052 (86K) [text/plain] 100%[====================================>] 88,052 --.--K/s 15:40:33 (18.50 MB/s) - `connect.c.1' を保存しました [88052/88052] [yuanying@kiriko src]$ gcc connect.c -o connect [yuanying@kiriko src]$ mv connect ~/bin/
2.設定ファイル(~/.ssh/config)の編集
設定ファイルにconnect.cを利用してFirewallを越えるホストの設定を行う。
Firewallの内側のネットワークにあるホストに対しては直接接続する。
[yuanying@kiriko src]$ vi ~/.ssh/config [yuanying@kiriko src]$ cat ~/.ssh/config ## Inside of the firewall, use connect command with direct connection. Host *.*.local.net ProxyCommand ~/bin/connect %h %p ## Outside of the firewall, use connect command with SOCKS conenction. Host * ProxyCommand ~/bin/connect -S path.to.proxy:1080 %h %p
3.トラブル発生
元サイトによるとこれで設定は終わりなはずなのだが、実際にsshを利用して外部ホストに接続しようとすると以下のようなエラーが。。
[yuanying@kiriko src]$ ssh server2 Bad owner or permissions on /home/yuanying/.ssh/config
調べてみるとconfig ファイルが他人にも見えるようになっているのが問題らしい。
というわけでファイルのパーミッションを600にした。
[yuanying@kiriko src]$ chmod 600 ~/.ssh/config [yuanying@kiriko src]$ ssh server2 yuanying@server2's password:
うまく接続できたなり。