config ファイルで自分だけの OpenSSH 環境を作る

config ファイルで自分だけの OpenSSH 環境を作る

イメージ

みなさんこんにちは。先週 BBQ に行ったのですが、なぜか僕だけ全然日焼けしません。nakamura です。

さてさて、今日は Linux マシン上で OpenSSH の config ファイルを使って、自分だけの SSH 環境を作る方法をご紹介します。自分の関わるサーバが増えてくると、putty のプロファイルだけでも膨大な数になってしまい接続したいサーバがすぐに見つからない!なんて事ありますよね。そんな時この方法を使えば putty から直接接続するサーバはいつもの一台だけ、そのサーバ上に自分だけの SSH 設定をしておく事でそれ以外のサーバにもそこから簡単に接続できるようになりますよ。

OpenSSH の config ファイル

実は OpenSSH の設定ファイルには 2 種類あります。(ちなみに、ここでいう設定ファイルとは SSH サーバではなくクライアントの設定ファイル、つまり ssh コマンドに関する設定ファイルの事です。)

ひとつはマシン全体でのグローバルな設定ファイル。ほとんどのディストリビューションにおいて /etc/ssh/ssh_config がそのファイルです。

もうひとつの設定ファイルはユーザ毎に自身の ssh クライアントとしての挙動を設定するファイル。これはユーザホームディレクトリ以下の .ssh/config というファイルになります。存在しない場合は自分で作ってしまってください。その際 .ssh ディレクトリのパーミッションは 700 で作りましょう。

ユーザ毎の設定ファイルに書かれた内容はそのユーザに限ってグローバルな設定を上書いてくれるので、このファイルをうまく使う事で自分にあった OpenSSH の環境が簡単に作れてしまうわけですね!

記述例

個人的に使っている設定は概ねこんな感じです。

ForwardAgent yes
PubkeyAuthentication yes
ServerAliveInterval 60

Host web1
    HostName 192.168.0.100
    User nakamura

Host web2
    HostName 192.168.0.101
    User root
    PasswordAuthentication yes

解説

それでは簡単に解説を。

ForwardAgent yes

エージェントフォワード機能を有効にしてくれます。有効にする事でローカルホストで記憶している SSH キーを接続先のサーバでも保持する事ができます。ssh コマンドの -A オプションと同じですね。

PubkeyAuthentication yes

公開鍵認証を有効にしています。

ServerAliveInterval 60

60 秒毎に接続先のサーバに null パケットを送信して、無操作時に勝手に接続が切れてしまうのを防いでくれます。

Host web1
    HostName 192.168.0.100
    User nakamura

接続先毎の設定も出来ます。ここでは 192.168.0.100 のサーバをホスト名 web1 で、接続ユーザ名を nakamura で設定しています。こうする事で ssh web1 と打つだけで ssh -A nakamura@192.168.0.100 を実行しているのと同じ事が出来てしまいます。web1 というホスト名が名前解決できる必要はありません。便利ですねー。

Host web2
    HostName 192.168.0.101
    User root
    PasswordAuthentication yes

web1 の設定とほぼかぶりますが、ユーザ名 root でパスワード認証を有効にする場合の設定例です。

ちなみに ssh コマンド実行時の優先度はコマンドラインオプション > .ssh/config ファイル > /etc/ssh/ssh_config の順になっているので、config ファイルに書かれている設定でも更にコマンド実行時のオプションで上書く事が可能です。

SSH クライアントの設定はこれ以外にも膨大にあります。ssh_config のマニュアルページに全て書かれているので自分なりの環境を作って毎日を快適に暗号化していきましょう!

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ