sshクライアントを設定する(Mac OS X・Linux/*BSD)

前回のsshdサーバの設定に続き、今回はsshクライアントを設定してみよう。Mac OS XにもLinuxディストリビューションにも、最初からsshクライアントがインストールされているので、まずはこの環境をセットアップする方法を紹介したい。Windowsでのセットアップ方法については、次回説明する。

公開鍵と秘密鍵のペアを生成

まず、前回セットアップしたsshdサーバにログインするために、公開鍵と秘密鍵のペアを生成する。すでにLinuxディストリビューションをOSとして使っているのであれば、細かい説明は不要だろう。そこで、以下ではMac OS Xを使っていることを前提に説明する。

Mac OS Xの場合、アプリケーションの選択で「その他」→「ターミナル」を選択すると次のようなアプリケーションが起動する(Linuxディストリビューションでも、「gnome-terminal」や「Konsole」といったターミナル・アプリケーションがあるので起動してほしい)。

アプリケーションの選択で「その他」→「ターミナル」を選択すると起動する画面

公開鍵と秘密鍵のペアは、「ssh-keygen」というコマンドを使って生成する。途中で「パスフレーズ」なるものの入力を求められるのだが、これは秘密鍵そのものを保護するためのパスワードのようなものだと思ってもらえばよい。

公開鍵と秘密鍵のペアを生成。途中で秘密鍵を保護するためのパスフレーズを入力する

上記のようにオプションを指定せずにssh-keygenコマンドを実行すると、次のパスで2つのファイルが生成される。

  • 公開鍵:~/.ssh/id_rsa.pub
  • 秘密鍵:~/.ssh/id_rsa

秘密鍵のほうは、クライアント側で保存しておく。秘密鍵は1台のPCのみに保存しておき、PCを紛失したりして秘密鍵が漏洩した場合には、ペアの公開鍵をサーバから削除するといった対処を行う。

あとは、公開鍵をサーバに設定すれば、そのサーバにログインできるようになる。なお、~/.sshのパーミッションが700になっていることや、~/.ssh/id_rsaのパーミッションが600になっていることも確認しておこう。これらのパーミッションが間違っていると機能しないので注意してほしい。

サーバに公開鍵を設定

作成した公開鍵の中身は、次のようになっている(複数行にわたっているように見えるが、すべて1行で書いてある)。

作成した公開鍵の中身

サーバにログインし、「~/.ssh/authorized_keys」というファイルにこの公開鍵を追加する。サーバはいったんパスワード認証でログインできる状態にしておき、ログイン後、設定が終わったらログイン方法を公開鍵認証のみにするように変更すればよい。作業を間違えると二度とログインできなくなるので、公開鍵認証でログインできることをきちんと確認してから設定を変更しよう。

なお、~/.ssh/authorized_keysがもし存在しなければ、新規に作成する必要がある。その際、ファイルのパーミッションに注意してほしい。同ファイルのパーミッションは600にしておかないと、機能してくれないからだ。

~/.ssh/authorized_keysファイルを作成し、パーミッションを600に設定

クライアント側の設定と、ログイン方法の確認

サーバに対してどの秘密鍵を使ってログインするのかを~/.ssh/configファイルに追加する。ここでは例として、指定されたIPアドレスのサーバに「webserver」という名前でログインできるように設定している。ポート番号は「22」、ユーザー名は「suzuki」、秘密鍵は「~/.ssh/id_rsa」だ。

ログイン設定をクライアントの~/.ssh/configファイルに追加した

あとは、「ssh webserver」のように入力すれば、公開鍵でログインできるようになる。ログイン方法の確認は、以下のようにオプション「-v」を指定して実行すればよい。

ログイン方法が「publickey」になっているのが確認できる(ハイライト部分)

なお、ログインの流れをもっと詳しく把握したい場合は、「-vvv」オプションを指定する。

今回のおさらい

今回の内容をまとめると、次のようになる。

  • 公開鍵と秘密鍵のペアは、ssh-keygenコマンドで生成する
  • 公開鍵は、サーバの~/.ssh/autorized_keysファイルに追加する
  • 秘密鍵は、クライアント側で保持する
  • クライアント側では~/.ssh/configファイルに設定を追加する
  • ~/.sshとその配下のファイルは、パーミッションを正しく設定すること
  • アクセス時の認証方式は、「ssh -v」で確認できる

設定作業に慣れるためにも、何度か公開鍵と秘密鍵のペアを作り替えて、いろいろなパターンを試してみるとよいだろう。「公開鍵を放置して、どこかから漏れた秘密鍵でログインされる」というのは、よくあることだ。「公開鍵をサーバから削除する」、「削除したら、ログインできなくなる」という流れは、ぜひ1度経験/確認しておいてほしい。