セキュリティの関係で、踏み台サーバーを経由しなければ、対象サーバーにSSHで接続できない環境があります。 このような場合に使えるSSH設定について。
[ローカル] => [対象サーバー] // 直接のSSH接続はできない。 [ローカル] => [踏み台サーバー] => [対象サーバー] // SSH接続可能
セキュリティのために、許可IP(例 会社内)からはアクセスできても、外部(例 自宅)からは直接SSH接続できない場合があります。 このような場合、外部からSSH接続できるように、踏み台となるサーバーを用意することがあります。 この場合、一旦踏み台サーバーにSSHでログインしてから、対象サーバーにログインすることになります。
メリット: ssh接続だけならこのままでも良いのですが、scpでファイルをローカルにコピーしたい場合は、2回のscpコマンド実行が必要で面倒です。 今回説明する多段SSHの設定を行うと、1回のscpコマンドで、踏み台サーバーを経由して対象サーバーからローカルにファイルがコピーできます。
.ssh/configの設定
~/.ssh/config に以下のように設定します。
Host [踏み台の名称] HostName [踏み台のIP、またはホスト名] User [踏み台のユーザー名] IdentityFile [踏み台に接続する鍵] Host [対象の名称] HostName [対象のIP、またはホスト名] User [対象のユーザー名] IdentityFile [対象に接続するための鍵] ProxyCommand ssh -CW %h:%p [踏み台の名称]最終行にある ProxyCOmmand の箇所で、踏み台サーバー経由で対象サーバーに接続するようになっています。
例 踏み台 stage.example.com 経由で、 192.168.100.10 に接続したい場合
ローカル => 踏み台[stage.example.com] => 対象[192.168.100.10]踏み台は鍵認証(~/.ssh/stage.pem)で、対象サーバーはパスワード認証の場合、以下のようになります。
Host stage HostName stage.example.com User toyota IdentityFile ~/.ssh/stage.pem Host target HostName 192.168.100.10 User honda ProxyCommand ssh -CW %h:%p stage
対象サーバーに接続する場合、以下を実行します。
ssh targetこの例では、対象サーバーはパスワード認証のため、上記コマンド実行後に、対象サーバーのパスワード入力が必要となります。 もし、踏み台サーバーもパスワード認証の場合は、踏み台のパスワード入力も必要となります。