: O. Yuanying

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:

うまく接続できたなり。