アクセスしたいマシンに直接SSHできず,別のマシンに一旦入ってからアクセスしているそこのあなた.朗報です.ちょっとプログラムをmakeして,.ssh/configファイルを設定するだけで,直接SSHできるようになります!!

まあ,大げさに言っているけど,
実践で学ぶ、一歩進んだサーバ構築・運用術(前編・中篇)で
http://www.gcd.org/sengoku/docs/NikkeiLinux00-12/config.ja.html
http://www.gcd.org/sengoku/docs/NikkeiLinux01-01/telnet.ja.html
で,telnet/webプロキシを設定してるけど,それのSSH版みたいなもの.

ポートフォワードすれば,いいジャンとか聞こえてきそうですが(^^;
まあ,これだと事前にプログラムを実行しなければならないから,ちょっと面倒...

そこで,Proxycommand でポートフォワードして,そこをプロキシ代わりに使えないかなと
思ったわけですが,perlスクリプト書かないとちょっと無理そうだし.すでに動いているか調べたり
しないといけないしね.
とにかく,ssh と netcat コマンド使って,簡単にやっちゃいましょう


え”,netcat って知らない?
でびあんゆーざなら

apt-get install netcat

じゃなかったら,
http://netcat.sourceforge.net/download.php
こっから,ダウンロードしてコンパイルして.

そこ,telnetsmtpたたいている人!!
telnet よりもnc(netcat)コマンドのほうが便利ですよ


ちょっとそれたけど,とりあえず Proxycommand の使い方から...

client$ ssh gw
gw$ ssh host

とか

client$ ssh -t gw ssh host

とか,やっているなら,gwにncが入っている前提だけど

client$ ssh -o'Proxycommand=ssh -T gw nc host 22' host

とすると,Proxycommand と netcat がちゃんと機能しているか確認できる
ちなみに

client$ ssh -o'Proxycommand=ssh -T gw nc host 22' hoge

としても,hostにアクセスできちゃいます.

それで,接続できることを確認したら,
~/.ssh/config OR /etc/ssh/ssh_config ファイルに
ホストの設定を書く.

たとえば,

Host gw
Hostname xxx.xxx.xxx.xxx

Host host
HOstname 192.168.0.100
Proxycommand ssh -T gw nc %h %p

とかすれば,

client$ ssh host

でアクセスできるようになる