🔑
ProxyJumpで踏み台サーバー経由接続する方法
はじめに
あるサーバーに踏み台を経由しなければアクセスできないという多段sshの条件で、できるだけシンプルに接続するためにProxyJumpを使います。
PC → 踏み台サーバー → 本番サーバー(最終目的地)
1. ssh接続情報を設定
~/.ssh/configに踏み台・本番両サーバーの接続情報を記述します。
# 踏み台サーバー
Host bastion # 任意の名称を設定
HostName xx.xxx.xx.xx # 踏み台サーバーのIPアドレス
User aaa # 踏み台サーバーのuser名
Port 22 # 指定のPort番号があれば
IdentityFile ~/.ssh/xxx # 踏み台サーバーの接続秘密鍵ファイルのパス
# 本番サーバー
Host production # 任意の名称を設定
HostName xx.xxx.xx.xx # 本番サーバーのIPアドレス
User bbb # 本番サーバーのuser名
Port 22 # 指定のPort番号があれば
ProxyJump bastion # 本番サーバーのHostを指定
IdentityFile ~/.ssh/xxx # 本番サーバーの接続秘密鍵ファイルのパス
2. 接続
上記が設定できたらローカルのターミナルから接続します。
まずsshコマンドで接続開始
ssh production(production部分は本番サーバーのHost名)
接続できたらbbb(本番サーバーのuser名)@production(本番サーバーのHost)となりますが、念の為hostname -iで本番サーバーのIPアドレスが返ってきたら接続確認OKです。
終了はCtrl + Dまたはexitで切断します。
※接続後もし下記のようなメッセージが表示された場合は秘密鍵ファイルのpermissionが緩すぎるので400(or 600)指定に変更します。
WARNING: UNPROTECTED PRIVATE KEY FILE!
Permissions 0644 for '秘密鍵ファイルのパス' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
適切なpermission権限へ変更
chmod 400 秘密鍵ファイルのパス
Cyberduck(GUI)などから接続する方法
mac利用者でCyberduckでSFTP接続したい場合、上記1. ssh接続情報を設定と2. 接続を行ってから、
Cyberduckで下記の接続情報を設定します。
ニックネーム:任意の名称
サーバ:~/.ssh/configに設定した本番サーバーのHost名。上記例だとproduction
ユーザ名:~/.ssh/configに設定した本番サーバーのuser名。上記例だとbbb
SSH Private Key:本番サーバーの接続秘密鍵ファイルのパス
Port:指定のPort番号があれば

あとは通常通り接続開始でアクセスできます。
ターミナルにてsshコマンドで繋いでおく必要もありません。
※ちなみにProxyJumpでなくLocalForward(トンネル方式)の場合は、sshコマンドで対象ホストへ接続している状態でCynerduckから接続する必要があります。
参考記事
Discussion