baicai

白菜

一个勤奋的代码搬运工!

SSHを使用して、ProxyCommandを介してプロキシサーバーを経由して他のサーバーにリモート接続します。

OpenSSH のクライアントには、SSH クライアントとサーバー間のトンネル通信に使用される ProxyCommand オプションがあります。トンネル技術、またはプロキシ技術とも呼ばれるこの技術は、ネットワーク通信技術の一般的な概念であり、一つのチャネルを別のチャネルの上に構築することを意味します。

SSH セッションは TCP 接続に基づいていますが、接続の両端の出口(または入口)をキャプチャすることで、他のチャネルを使用して転送することができます。そして、SSH はまだ自分がもう一方の端と TCP 接続を使用していると考えています。

ProxyCommand は、SSH クライアントが標準入出力とこのコマンドを起動したプロセスを介して通常の SSH 通信を行うためのコマンド(プロキシ)を指定します。そして、Proxy は SSH サーバーに接続しています(通常はサーバープロキシであり、そのサーバープロキシがサーバーに接続しています)。

環境の説明

    リモートサーバーのIPアドレスは0.0.0.1で、コード名はXです。
    別のリモートサーバーのIPアドレスは0.0.0.2で、コード名はYです。
    現在のマシンのIPアドレスは0.0.0.3で、コード名はAです。ローカルでSSHクライアントを使用してXとYに接続することができます。

ここでは、すべてのアクセスに鍵を使用しています。マシン A と Y の間ではアクセスできません

ローカルの
~/.ssh/config
の設定ファイルの情報は次のようになります。X を介して Y に接続します。

Host X
        HostName 0.0.0.1
        User root
        Port 22
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa_1
Host Y
        HostName 0.0.0.2
        User root
        Port 22
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa_2
Host test
    HostName 0.0.0.2
    User root
    Port 22
    IdentityFile ~/.ssh/id_rsa_2
    ProxyCommand ssh X -W %h:%p

マシン A から X を介して Y サーバーに接続するテスト

ssh test

注:

-W host:port
             クライアントの標準入力と標準出力をセキュアチャネル上のホストのポートに転送するよう要求します。-N、-T、ExitOnForwardFailure、ClearAllForwardingsを暗黙的に指定しますが、これらは設定ファイルや-oコマンドラインオプションでオーバーライドすることができます。

-W:このオプションはOpenSSH 5.4以降でサポートされています。公式のリリース情報を参照してください。
-Wを使用する前に、通常はncオプションを使用していました。ncはTCP/UDPパケットを指定された(代替)場所に転送することができ、基本的にはssh -Wと同じです。

参考:
openssh

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。