LinuxでのSSHポート転送構成方法
通常、2つの異なるネットワーク間では、通信使用のために特定のポートが常に開放されますが、SSHで使用される22ポートは通常、開放された列にあります。SSHベースのポート転送とは,SSHを中間のエージェントとして利用し,2つのネットワーク間の制約を回避し,任意のポートへのアクセスを円滑に行うことである.
ポート転送は、順方向ポート転送、逆方向ポート転送、動的ポート転送の3つに分けられます。
この3つのポート転送方式の使い方を示すために、まず2つのネットワークドメインOfficeとProdが存在すると仮定し、ネットワークドメインOfficeには2つのホストAとBがあり、ネットワークドメインProdには2つのホストCとDがあり、この2つのネットワークドメインの間にはホストAがCの22ポートにアクセスできるほか、他のすべてのアクセスはネットワークルールによって禁止されている。すなわち、AマシンはCの22以外のすべてのポートにアクセスできず、Dホストにもアクセスできない。ホストCとDは、AまたはBのいずれかのホストにアクセスできません。
トップタスク1:順方向ポート転送今から私たちの最初の任務を始めます:ホストDの上にデータベースサービスがインストールされていると仮定して、傍受のポートは8888で、もし私がOffic eドメインのホストAを通じて直接Dホストの中のデータベースにアクセスしたいならば、どうすればいいですか?これはSSHの順方向ポート機能を使うことになります。ここではまず、Linuxでは、すべてのポート転送の操作が、独自のツールsshを使用して行うことができることを説明します。
タスク1を完了するコマンドは簡単です。次のようにします。
コードのコピー次のコマンドを説明します。
パラメータ-L
ローカルでリスニングが開始されたポートを示し、後に続くパラメータフォーマットは、ローカルの8000ポートをリモートホストDの8888ポートに転送することを示す。
このパラメータはsshを使用してログインするホストとログインするユーザー名を指定します。ここで使用するホストと前のパラメータのホストは同じネットワークドメインにあり、相互にアクセスできる必要があります。もちろん、同じマシンでも構いません。コードのコピー
oracle@host-a[orcl]:~$ netstat -natp|grep 8000
(Not all processes could be identified, non-owned process infotcp 0 0 127.0.0.1:8000 0.0.0.0:* LISTEN 3767/ssh
tcp 0 0 ::1:8000 :::* LISTEN 3767/ssh次に、TNSNAMESを構成します。構成は次のとおりです。
コードのコピーorcl=
(DESCRIPTION=
(ENABLE=BROKEN)(FAILOVER=ON)
(LOAD_BALANCE=YES)
(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=8000))
)
(CONNECT_DATA=
(SID=orcl))
次にtnspingをテストします。oracle@host-a[orcl]:~$ tnsping orcl
TNS Ping Utility for Linux: Version 11.1.0.7.0 - Production on 05-JUL-2010 09:13:25Copyright (c) 1997, 2008, Oracle. All rights reserved.
Used parameter files:Attempting to contact (DESCRIPTION= (ENABLE=BROKEN) (ADDRESS_LIST= (FAILOVER=ON) (LOAD_BALANCE=YES) (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=8000))) (CONNECT_DATA= (SID=orcl)))
OK (340 msec)
大功を成し遂げる。
トップタスク2:逆ポート転送
ネットワークドメインProdは任意の方法でネットワークドメインOfficeにアクセスできないため、この2つのネットワークドメインが置かれている物理的な位置が完全に異なると仮定すると、その日ネットワークドメインProdにいるときにネットワークドメインOfficeにあるホストAを操作したい場合、どうすればいいのでしょうか。これがリバースポート転送に使われる時です。