Palmsonntagmorgen

NGSデータを使った解析と、その周辺。

SSHその3 ssh の設定を保存 (.ssh/config)

SSHの記事その3です。ここまでの流れは以下の記事を参照してください。

rnakato.hatenablog.jp

rnakato.hatenablog.jp

「その2」の記事で、 .ssh/configに以下を記入することでサーバ間のssh, scpをする際に秘密鍵、パスワードの入力が不要になると述べました。

ForwardAgent yes

.ssh/秘密鍵など、sshのためのファイルが格納されている場所です。ここにconfigという名前のファイルを作成すると、その中に記載されている設定がデフォルトで適用されるようになり、sshコマンドを打つ時にオプションを指定する必要がなくなります。

以下では .ssh/configファイルの利用例を紹介します。

接続切れを防ぐ

ServerAliveInterval 100

sshはサーバから応答がないと自動で接続が切れてしまいますが、このように記載しておくと接続が切れるまでの時間を延ばすことができます。

参考:ssh接続が自動切断される場合の回避方法 - セキュリティ

接続先でXウィンドウを使う

接続先のサーバでGUI(ブラウザなど)を起動したい場合は通常ssh-Xオプションを追加しますが、configに以下のように記載することでオプションの指定が不要になります。

X11Forwarding yes

参考:X11 forwarding — 京大マイコンクラブ (KMC)

秘密鍵の場所を指定

秘密鍵がデフォルトのパス( ~/.ssh/id_rsaなど)でない場所にある場合、configに以下のように記載することで秘密鍵の場所を指定することができます。

IdentityFile <PATH_to_id_rsa>

サーバに接続するポートを指定

サーバに接続する際の設定をサーバ別に指定することもできます。以下はserver_aという名前のサーバに接続する時にデフォルトのポートを12345にするという設定です。

Host server_a
  User <ユーザ名>
  Hostname server_a
  Port 12345
  IdentityFile <PATH_to_id_rsa>

IdentityFile を指定することで、「このサーバに接続する時のみこの秘密鍵を使う」などのような指定方法も可能です。

多段sshログイン

サーバが複数台あり、特定のサーバ(ここではserver_humidaiとします)を踏み台としてその他のサーバ(ここではserver_aとします)に接続する場合、ローカルPC→server_humidaiserver_asshしなければなりません。scpなどを使う時は面倒ですね。

ここでconfigに以下のように記載すると、直接 ssh server_aとすることでログイン可能になります。(ForwardAgent yesによって公開鍵パスワードの入力を省略しています)

ForwardAgent yes

Host server_humidai
  User <ユーザ名>
  Hostname server_humidai
Host server_a
  User <ユーザ名>
  Hostname server_a
  ProxyCommand ssh -W %h:%p server_humidai

まとめ

sshは毎日のように使うコマンドですので、configにできる限り設定を書いておいてコマンド実行を楽にするのがよいと思います。自分なりのconfigファイルをぜひ作成してみてください。