「Secure Shell」(SSH)は、あらゆる「Linux」ユーザーがおそらくいつかは使用することになるツールの1つだ。SSHを使用すると、簡単(かつ安全)にリモートサーバーやデスクトップにログインして、それらのマシンで管理や開発、確認などの作業を実行することができる。
SSHは以下のコマンドを実行するだけで使用できる。
ssh jack@192.168.1.11
あるいは、以下の極めて単純なコマンドでも使用可能だ。
ssh 192.168.1.11
もちろん、IPアドレスの部分は、アクセスする必要のあるマシンのアドレス(またはドメイン)に置き換える。
設定の異なる(例えば、ユーザー名やSSH認証キーの異なる)多数のマシンにアクセスする必要がある場合、SSHはもう少し複雑だ。毎日、約20台の異なるサーバーにログインしなければならないとしたらどうなるか想像してみてほしい。これらのサーバーのIPアドレスやドメインを把握しておかなければならないだけでなく、使用されているユーザー名や認証キーも記憶する必要がある。それだけでもかなり大変な作業かもしれない。
幸い、SSHでは、そうした情報をすべて格納する設定ファイルを作成できる。したがって、ssh olivia@192.168.1.100 -p 2222のような長いコマンドを入力しなくても、ssh web1と入力するだけで済む。
本記事では、これを実行する手順を紹介する。
SSH設定ファイルを作成する
これらすべてのリモートマシンへのSSH接続に使用するLinuxマシンにログインする。ターミナルウィンドウを開いて、図Aのコマンドを実行し、新しい設定ファイルを作成する。
図A
「nano」を使用して新しいSSH設定ファイルを作成する。
これは新しいファイルなので、空白のキャンバスのようなものだ。ここにサーバーの設定を追加していくことができる。例えば、以下のリモートサーバーを設定したいとしよう。
- アドレス「192.168.1.100」、ユーザー名「olivia」のweb1。
- アドレス「192.168.1.101」、ユーザー名「nathan」、SSHキー「~/.ssh/id_nathan」のdb1。
- アドレス「192.168.1.102」、ユーザー名「lilly」、2222ポートのdocker1。
最初のエントリーは以下のようになる。
Host "web1" Hostname "192.168.1.100" User olivia
この時点でファイルを保存して閉じると、以下のコマンドを使用して、192.168.1.100にSSH接続できるようになる。
ssh web1
先に進んで、次の2つのエントリーを設定しよう。これらのエントリーは以下のようになる。
Host db1 Hostname "192.168.1.101" User nathan IdentityFile ~/.ssh/id_nathan PubkeyAuthentication yes
Host docker1 Hostname "192.168.1.102" User lilly Port 2222
ファイルを保存して閉じる。これで、以下のコマンドを使用して、これらのマシンにSSH接続できるようになった。
ssh web1 ssh db1 ssh docker1
必要に応じて、各ホストにニックネームを使用し、覚えやすくすることをお薦めする。これをやっておかないと、どのマシンに接続しようとしているのかを忘れてしまい、記憶を呼び起こすために、設定ファイルを頻繁に参照しなければならなくなる。
それでは、すべてのリモートサーバーで同じユーザー名を使用しているが、ローカルマシンでは別のユーザー名を使っているという場合は、どうすればいいのだろうか。例えば、ローカルマシンのユーザー名はjackだが、すべてのリモートサーバーでadminというユーザー名を使用しているとしよう。以下のように、IPアドレスにワイルドカードを使用することで、これらすべてのサーバーに対して単一のエントリーを作成することが可能だ。
Host 192.168.1.* User admin
上記の設定は、設定ファイルの一番上に配置される。
その後、「User」オプションを省略して、各サーバーを必要に応じて個別に設定することができる。例えば、192.168.1.200と192.168.1.201の両方のサーバーがSSHキー認証を使用している場合は、エントリーを以下のように設定する。
Host web2 Hostname 192.168.1.200 IdentityFile ~/.ssh/id_admin PubkeyAuthentication yes
Host web3 Hostname 192.168.1.201 IdentityFile ~/.ssh/id_admin PubkeyAuthentication yes
192.168.1.xというIPアドレススキームのすべてのマシンにadminというユーザー名を適用したため、そのユーザー名はすべての接続に適用される。必要に応じて、「User」設定行を追加し、そのグローバル設定をオーバーライドすることも可能だ。
SSH設定ファイルで利用できるオプションは、ほかにもいくつかあるが(SSH設定の公式ドキュメントですべて説明されている)、本記事で紹介した例さえ押さえておけば、SSH設定ファイルの使用を開始できるはずだ。
SSH設定ファイルを使用して、SSHでのリモートアクセスを容易にする方法の説明は、以上である。
この記事は海外Red Ventures発の記事を朝日インタラクティブが日本向けに編集したものです。