SSH関連で活用できると便利な以下の二つの事項についてまとめます。
踏み台サーバ step を経由して internal-0001 にアクセスする設定ファイルの例を記載します。設定項目の意味については「man ssh_config」を参照してみてください。
~/.ssh/config
Host step
HostName step.example.com
User username
IdentityFile ~/.ssh/id_rsa
ServerAliveInterval 60
Host internal-0001
HostName 10.0.0.1
User username
IdentityFile ~/.ssh/id_rsa
ServerAliveInterval 60
ProxyCommand ssh -W %h:%p step
権限設定を忘れないようにしましょう。
$ chmod 600 ~/.ssh/config
以下のように直接ログインできるようになっています。
$ ssh internal-0001
この設定ファイルがない場合は
$ ssh username@step.example.com -i ~/.ssh/id_rsa
としてから
$ ssh username@10.0.0.1 -i ~/.ssh/id_rsa
とする必要がありました。例えば Capistrano で internal-0001 にデプロイする際にこれでは困りますね。
~/.bashrc などに以下の内容を追記します。ログイン時に一度だけパスワードを入力すれば、以降の入力は不要になります。
SSH_AGENT_FILE=$HOME/.ssh-agent
test -f $SSH_AGENT_FILE && source $SSH_AGENT_FILE
if ! ssh-add -l > /dev/null 2>&1; then
ssh-agent > $SSH_AGENT_FILE
source $SSH_AGENT_FILE
ssh-add $HOME/.ssh/id_rsa
fi
過去に作成された $SSH_AGENT_FILE が存在していれば、既にssh-agentが常駐している可能性があるため source でその情報を読み込んでおきます。実際にそのssh-agentが生きていてかつ秘密鍵を覚えている場合はなにもしませんが、そうでない場合は新規にssh-agentを常駐させて、秘密鍵を覚えさせます。