パスワード入力無しで PuTTY から SSHサーバへ接続する
概要
この記事では次のような環境を想定する。
- Windows側のPuTTY(SSHクライアント)からLinux側のOpenSSH(SSHサーバー)へ接続している
- SSHのユーザー認証にパスワード認証を使用し,ログイン時に毎回パスワードを手で入力している
- この現状を改善したい。つまり,パスワード入力を省略したい(公開鍵認証を使用する)
SSHのユーザー認証にパスワード認証を使用している場合,我々はログインするためにパスワードの入力を強制される。このような人間にとって面倒な作業は自動化されることが望ましい。
ログイン時にパスワード入力を省略する方法はいくつかあり,今回はこの中で最も簡単で簡潔だと思われる方法を紹介する。それは認証に公開鍵認証を使用する方法で,パスワードの代わりに鍵と呼ばれるファイルをアイデンティティとするためログイン時のパスワード入力を省略できる。この公開鍵認証は PuTTY と OpenSSH の設定を少し変更するだけで使えるようになる。つまり,既存のソフトウェアだけを必要とするので目的を簡単に実現できる。
今回の興味の対象はパスワード入力なしで SSHサーバへ接続することなので,それを実現する最低限の設定を以下で記述する。セキュリティに関する設定は今回の興味の対象では無く,各自お気に入りの設定があると思うのでここでは記述しない。
鍵の作成
鍵は Linux側の `ssh-keygen` で作成する(Windows側の puttygen.exe でも作成できるが,OpenSSH用に変換する必要があるため面倒):
オプション `-N ""` を指定して,パスフレーズを設定しないようにする。パスフレーズとは鍵ファイルを暗号化・複合するための文字列で,鍵ファイルが盗まれた場合の時間稼ぎになる。しかし,鍵ファイルを使用する際にパスフレーズを入力する必要があり,今回の目的に反するのでパスフレーズは設定しない。
$ssh-keygen -N ""
鍵をあるべき場所へ移動
公開鍵は Linux側(サーバー),秘密鍵は Windows側(クライアント)に配置する。どうして鍵が二つあるのか分からない人はサイモン・シン『暗号解読』でも読んどけばいい。