本記事では、socksプロキシ経由で、リモートホストにSSH接続する方法をまとめる。
試した環境の詳細は、以下の図のように、LAN内にあるクライアント(Ubuntu 9.04 on ThinkPad X31)で、Socksサーバ(Socks5プロトコル、認証なし)を経由して(LANを出て)、リモートホスト(centOS 5.3 on ThinkCentre S50)にSSH接続した。
使用したsshは、以下の通り。
$ ssh -v OpenSSH_5.1p1 Debian-5ubuntu1, OpenSSL 0.9.8g 19 Oct 2007
まず、以下のファイルを作成して、~/.sshにconfigという名前で配置する(無ければ、.sshディレクトリを作成する)。リモートホスト(foo.bar.net)のhogeというアカウントに、SOCKSサーバ(socks-proxy.xxx.jpの1080ポート、認証なし)を経由して、SSH接続することを意味している。foo.bar.net.socksは、このプロファイルのための名称なので、この通りでなくても良い。
Host foo.bar.net.socks HostName foo.bar.net User hoge Port 22 ProxyCommand /usr/bin/connect -a none -S socks-proxy.xxx.jp:1080 %h %p
ちなみに、connectがなければインストールする。connectは、SOCKS4あるいは5、httpトンネルを使って、TCP接続を確立するためのツールである。
$ sudo apt-get install connect-proxy
Ubuntu 9.04では、デフォルトで/usr/binに実行ファイルが配置されるので、上のconfigファイルにはそのように書いてある(そうでないならば変更すること)。
$ which connect /usr/bin/connect
connectコマンドの詳細は、SSH Proxy Command -- connect.cを参照のこと。
当然、リモートホストには、hogeというアカウントが存在し、かつ、sshによる接続が許可されていなければならない。うまくいかないときは、iptables、tcp wrapperなどでアクセス制限がされていないか確認すること。また、sshdが動いていることも大前提。また、クライアントはSSH接続するとき、デフォルトで~/.ssh/configを読み込むが、システムによってはそうでないかもしれない(/etc/ssh/ssh_configを参照のこと。sshd_configと間違えないように!)。
今回は、RSA認証でリモートホストにSSH接続するので、その設定もできていること(詳細は、SSHサーバの設定を参照のこと)。
以上の準備の下で、次のコマンドを実行し、SSH接続を確立する。
$ ssh foo.bar.net.socks
以下に参照サイトを列挙する。
0 コメント:
コメントを投稿