今回はOpenSSHの利用方法の中でも、非常に有用なポート転送(port fowarding)について解説する。通信経路が安全でないネットワークを通じて様々なネットワーク通信する場合にも、ポート転送によって安全なSSH通信で保護することができる。 ポート転送はSSHプロトコルの暗号通信経路を予め用意しておき、その経路の中を通して一般のネットワーク通信をさせるというイメージを持ってもらうとよいだろう。SSHの接続の方向と一般のネットワーク通信の接続の方向との関係で2通りのポート転送のやり方がある。 1つ目のポート転送の方法は、SSHの接続元(ローカルホスト)と接続先(リモートホスト)と同じ向きに一般の通信の接続要求がある場合、つまりローカルホスト側(のネットワーク)に一般用ネットワークソフトのクライアントがあり、リモートホスト側(のネットワーク)に何らかのネットワークサーバがある場合である。 この場合sshでの接続の際には、一般のSSHプロトコルの接続に必要な情報以外に、一般用通信のためのローカルホストの接続用ポート番号(localport)、リモート側の最終接続先ホスト(endhost)、リモート側の最終接続先ポート番号(endport)の情報を与えてやらなければならない。この場合のsshでの接続コマンドは、ssh [-1] [-v] [-C] [-f] [-N] [-g] -L localport:endhost:endport [UserID@]hostnameという形になる。-L オプションでローカルホストからリモートホスト方向へのポート転送を指定している。-1 の部分の数字はSSHプロトコルの指定、-v オプションはデバッグモード、-C オプションが圧縮転送、-f オプションはSSHによる接続確立後のバックグラウンド移行であり、これまで説明してきた場合と同様である。 簡単な例として、sshクライアントを動かしているローカルホスト(sshclient.local.com)からリモートホスト(sshd.office.ac)側のネットワーク内にあるserverd.office.acというホストにtelnet接続できるよう、ローカルホストのポート10000を開けておく場合は、$ ssh -1 -L 10000:serverd.office.ac:23 sshd.office.acというコマンドを用いればよい。 endhostであるserverd.office.acはSSH接続のリモートホストであるsshd.office.acから見てのホスト名なので、この例の場合のendhost指定はネットワーク名のoffice.acを省略可能である。もしendhostとして localhost と指定した場合は、(sshクライアントの動いているローカルホストではなく、)sshdの動いているリモートホスト自身のことになるので注意して欲しい。 このポート転送を利用してローカルホスト上のtelnetクライアントからserverd.office.acに接続したい場合は、$ telnet localhost 10000officeoffice@ukky.nethttp://www.office.ac/(詳しくはScan本誌をご覧ください)http://www.vagabond.co.jp/vv/m-sc.htm