「ssh config」および「ssh-agent」の活用
[履歴] [最終更新] (2015/06/23 03:29:11)
最近の投稿
注目の記事

概要

SSH関連で活用できると便利な以下の二つの事項についてまとめます。

  • SSH接続の設定ファイル「~/.ssh/config」によく記述する内容
  • SSH接続時に秘密鍵のパスワード入力を省略する ssh-agent の利用方法

SSH config

踏み台サーバ 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 にデプロイする際にこれでは困りますね。

SSH-agent

~/.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 : 実行するとプロセスが常駐します
  • ssh-add : 常駐しているssh-agentプロセスに指定した秘密鍵を覚えさせるコマンドです

過去に作成された $SSH_AGENT_FILE が存在していれば、既にssh-agentが常駐している可能性があるため source でその情報を読み込んでおきます。実際にそのssh-agentが生きていてかつ秘密鍵を覚えている場合はなにもしませんが、そうでない場合は新規にssh-agentを常駐させて、秘密鍵を覚えさせます。

関連ページ
    概要 SSH-agent はこちらのページに記載しましたように秘密鍵のパスワード入力を省略する目的で使用することができます。実はそれだけではなく、やはりこちらのページで紹介した SSH config による多段ログインに相当する機能も提供しています。これを特に SSH エージェントフォワードとよびます。 ログイン実験
    概要 リモートホストの X Window System (X11) を転送して利用する方法を、SSH および Virtual Network Computing (VNC) の二つの方法について記載します。 SSH サーバとホストの両方で X11 転送を有効にすることで利用できます。アプリケーション毎に転送できます。
    コマンドのエイリアスを登録する (update-alternatives) mybin という名前のコマンドを登録 sudo update-alternatives --install /usr/local/bin/mybin mybin /usr/bin/echo 10 sudo update-alternatives --install /usr/local/bin/mybin mybin