OpenSSHを用いた公開鍵認証のやり方

ubuntuを使い始めて2年。ようやくやり方覚えました。遅すぎました。

公開鍵・秘密鍵の作成

まず先に公開鍵・秘密鍵をクライアントPC側で作成します。先にsshdの設定を変更すると泣くハメになる場合があります。

$ ssh-keygen -t rsa

を実行。
鍵ファイルの保存先を聞かれるので、必要なら指定します。
次にパスフレーズを入力するかどうか聞かれます。
公開鍵で暗号化した情報を復号する際に使用されるようです。
鍵のペアに対してさらにパスワードを設定する感じ(だと思う)。
パスフレーズは再入力させれますので再入力します。
あとは適当にリターンキー連打。
作成が完了すると、ターミナルにも表示されてますが、$HOME/.ssh以下に秘密鍵・公開鍵のファイルがそれぞれ「id_rsa」「id_rsa.pub」として保存されています。
このうち、id_rsaファイルはSSHクライアントが使用する秘密鍵情報が入ったファイルなのでこのまま保存しておきます。
id_rsa.pubファイルはサーバーへ登録する公開鍵情報が入ったファイルですので、ssh接続をしたいサーバーへこのファイルを転送します。

$ scp $HOME/.ssh/id_rsa.pub hoge@hogehoge:.ssh/

SCPで転送する場合はこうなります。
ここからサーバー側での作業になります。
転送したid_rsa.pubファイルの内容を、サーバー側のログインしたいユーザーの$HOME/.ssh/authorized_keysへ追記します。

$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

authorized_keysを初めて作成した場合、他のユーザーに触られると面倒になりますので、パーミッションを600へ変更しておきましょう。

$ chmod 600 $HOME/.ssh/authorized_keys

以上で鍵の登録は終了です。

sshd_configの設定

RSAAuthenticationとPubkeyAuthenticationをyesに設定する。
パスワード認証を捨てる場合は、PasswordAuthenticationをnoに設定する。
設定を変更したらsshdを再起動。

接続テスト

鍵の登録とsshd_configの設定が完了したら試しに接続してみます。

ssh -p 22 hoge@hogehoge

そうするとパスフレーズを聞かれますのでパスフレーズを入力します。
無事接続されれば完了です。
パスフレーズを聞かれた際に何も入力せずにリターンキーを押すと、パスワードによる認証が有効ならパスワードでの認証が行えます。