あなたはすでに、リモートシステムにアクセスするには、sshコマンドに精通しているかもしれません。ssh
コマンドの後ろに使用されるプロトコルは、入力端子と出力端子は、安全なチャネルを通って流れることができます。しかし、あなたはまた、あなたが使用できることを知ってssh
安全に送信し、他のデータを受信しますか?一つの方法は、あなたが実行できる「ポートフォワーディングポートフォワーディング」、使用することにあるssh
安全にセッション中にネットワークポートに接続します。この記事では、それがどのように動作するかを示します。
ポートについて
65535 -標準的なLinuxシステムは、ネットワーク・ポートのセット、範囲0が割り当てられます。システムで使用するために1023年-システムは0のままです。多くのシステムでは、これらのローエンドのスローガンを使用するように選択することはできません。特定のサービスを実行するために使用されるいくつかのポートは通常あります。システムでは次のことができます/etc/services
定義ファイルを見つけます。
あなたは、ケーブルジャックに接続することができるネットワークポートまたは類似の物理ポートと考えることができます。ポートは、物理的なジャック配線バックと同様のシステム上のサービスに接続することができます。一つの例は、(としても知られているのApache Webサーバーですhttpd
)。HTTPの非セキュアな接続セキュアなHTTPS接続443が通常必要とされるため、Webサーバーは、通常、ホストシステム上のポート80を使用する必要があります。
あなたが(例えば、Webブラウザを使用して)リモートシステムに接続すると、ブラウザがあなたのホスト上のポートへの「接続」されています。これは、通常のような54001のランダム高いポートです。ホストコンピュータ上のポートは、リモートホスト上でのセキュアなWebサーバにアクセスする(例えば、443)ポートに接続されています。
だから、あなたは非常に多くの使用可能なポート、ポートフォワーディングを持っていたときに、なぜそれを使うのか?これは、いくつかの一般的なWeb開発者の生活のケースです。
ローカルポートフォワーディング
あなたが呼ばれていることを想像してremote.example.com
、リモートシステム上のWeb開発。通常、あなたはでありssh
、このシステムに入るが、それはファイアウォールの背後にある、とファイアウォールがめったにアクセスの他の種類を許可していない、と他のほとんどのポートをブロックします。Webアプリケーションがリモートシステムにアクセスするためにブラウザを使用することができますしようとするには役立つだろう。しかし、憎悪のファイアウォールを使用しているため、あなたのブラウザにURLを入力して、従来の方法でアクセスすることはできません。
ローカルフォワーディングあなたができるように、ssh
リモートシステムへのアクセスを介してアクセスポートを構築します。このポートは、(「ローカル転送」と呼ばれる)システム上のローカルポートとして示されています。
Webアプリケーションと仮定すると、remote.example.com
ポート8000上で実行されています。ローカルシステムにポート8000は、セッションの開始時に、あなたのシステム上のポート8000に転送-L
オプションssh
の組み合わせで:
$ ssh-L 8000:localhost:8000 remote.example.com
ように、なぜ我々は、使用localhost
、転送対象として?これは、あるremote.example.com
視点、あなたが自分自身のホストポート8000を使用する必要があります。(任意のホストは通常、ネットワークを介して接続することができることを思い出してlocalhost
自分自身に接続されています。)今、あなたはポート8000に接続されていることを、システムのポート。ssh
セッションの準備ができたら、それは開いたまま、その後、あなたはブラウザに入力することができhttp://localhost:8000
、あなたのWebアプリケーションを表示します。さて、システム間のトラフィックが可能なssh
セキュアトンネルを送信します!
あなたは鋭い目を持っている場合は、何かに気づいたかもしれません。我々はしている場合remote.example.com
に転送されることとlocalhost
どのように異なるホスト名は何?それは別のシステム上のネットワークポートにアクセスすることができる場合は、通常、同じように簡単にポートを転送することができます。たとえば、あなたが訪問したいとは、リモートネットワークですdb.example.com
MariaDBやMySQLサービスの。サービスは通常、ポート3306で実行されます。だから、あなたがない場合であってもssh
、実際のdb.example.com
ホスト、あなたはまた、前方に、このコマンドを使用することができます。
$ ssh-L 3306:db.example.com:3306 remote.example.com
さて、あなたはできるlocalhost
コマンドMariaDBを実行して、実際に使用してdb.example.com
ホストを。
リモートポートフォワーディング
リモート前方ので、あなたはその逆のことができるという。あなたは友人のオフィス用のWebアプリケーションを設計している想像し、そしてそれらにあなたの作品を見せたいです。しかし、残念ながら、あなたはコーヒーショップで働く、およびネットワーク設定以来、彼らはネットワーク接続を介してあなたのラップトップにアクセスすることはできません。しかし、あなたはまた、オフィスの使用しているremote.example.com
システムを、そしてまだここでログインすることができます。ローカルポート5000上のWebアプリケーションがうまく動作するようです。
リモートポートフォワーディングあなたができるように、ssh
ローカルシステムからポートを確立するためのトンネルを接続し、リモートシステム上のポートを利用できるようにします。開始時にssh
セッションだけ使用-R
オプション:
$ ssh-R 6000:localhost:5000 remote.example.com
今、会社のファイアウォールで友人がブラウザを開くようにするとき、彼らがアクセスすることができhttp://remote.example.com:6000
、あなたの仕事を表示します。ローカルポートフォワーディングの例のように、貫通通信ssh
会話を安全に。
デフォルトでは、sshd
デーモンはそう、ホストの設定で実行されているだけでホストがリモートポート転送に接続することができます。あなたの友人が他のようにしたいと仮定しexample.com
、人々は会社のホストあなたの仕事を参照してください、彼らはありませんremote.example.com
で。あなたはようにする必要がありremote.example.com
、次のホストとなる所有者1に追加します/etc/ssh/sshd_config
:
GatewayPortsyes#或
GatewayPorts clientspecified
ことを最初のオプションの手段remote.example.com
すべてのネットワークインタフェースは、リモートポート転送に使用することができます。トンネリングクライアントの第二の手段は、アドレスを選択することができます。デフォルトでは、このオプションが設定されていますno
。
このオプションを使用すると、あなたssh
のクライアントはまだポートフォワーディングは、インターフェイスのあなたの側を共有することができます指定する必要があります。この操作は、ローカルポートする前に、ネットワークアドレスの範囲を追加することによって行われます。含め、これを行うには、いくつかの方法があります:
$ ssh-R *:6000:localhost:5000#所有网络
$ ssh-R 0.0.0.0:6000:localhost:5000#所有网络
$ ssh-R 192.168.1.15:6000:localhost:5000#单个网络
$ ssh-R remote.example.com:6000:localhost:5000#单个网络
その他の考慮事項
ローカルおよびリモートシステム上のポート番号が同一である必要はないことに注意してください。実際には、時にはあなたも同じポートを使用することはできません。例えば、平均的なユーザは、デフォルト設定でシステムポートに転送されなくてもよいです。
また、転送ホストの制限。あなたがネットワークより厳格なセキュリティ上のホストが必要な場合は、これはあなたに重要であるかもしれません。sshd
デーモンプロセスPermitOpen
およびTCPポートフォワーディングのために使用することができるかどうかを制御します。デフォルト設定はany
、それが上記のすべての例が正常に動作していることができます。任意のポート転送を禁止するには、選択none
、またはのみ特定できるように、「ホスト:ポート」詳細については、manページを検索しPermitOpen
設定するには、sshd
デーモンを:
$ man sshd_config
最後に、だけであることを覚えてssh
ポートフォワーディングでセッションが開きます。あなたが活動を転送維持するのに長い時間が必要な場合は、使用してみてください-N
バックグラウンドでセッションを実行するオプションを。コンソールはコンソールを離れる際に奪われてからそれを防ぐためにロックされていることを確認してください。
経由:https://fedoramagazine.org/using-ssh-port-forwarding-on-fedora/