ssh-keygenで鍵作成し、sshでログインできるようにする。

秘密鍵と共通鍵のセットを作る。

1.鍵作成コマンドを実行

ssh-keygen -t rsa

-t オプション
鍵の種類 rsa1, dsa, ecdsa, ed25319, rsa (-tで指定しない場合はバージョンにもよるけど大抵rsaがデフォルト)

2.鍵の保存名を設定

Enter file in which to save the key (/home/gomokuro/.ssh/id_rsa):
といった具合に聞かれるので、そのままEnterを押せば、()の中のパスに保存される。
任意の保存先ファイル名を続けて入力すればそこに保存される。

Enter passphrase (empty for no passphrase):
作成時に、パスフレーズを聞かれる。
パスフレーズは、秘密鍵を盗まれた時に秘密鍵をすぐには使えないようにするのが目的。

ちなみに、空エンターでパスフレーズ無しの鍵となる。
自動実行する際に、パスフレーズを聞かれるので実行がとまるの防ぐなどの用途に使う。
それか、秘密鍵にパスフレーズを設定するよりしないほうがメリットがあれば。

成功すると、id_rsa、id_rsa.pubという2つの鍵ファイルができる。(任意につけた場合は、hoge, hoge.pub)
この.pubのほうが公開鍵で、ついてないほうが秘密鍵となる。

鍵を設定する。

ログインしたいリモートマシンにSFTPとかで公開鍵を渡す。
ログインしたいリモートマシンのユーザーのホームディレクトリの.sshディレクトリ以下にauthorized_keysを置く
ログインユーザー以外が使えないようにする。

chmod 600 id_rsa.pub
mv id_rsa.pub authorized_keys

すでにauthorized_keysがある場合は、公開鍵を追記する。

cat id_rsa.pub >> authorized_keys

lessコマンドなどでauthorized_keysを見ると、id_rsa.pubの中身が追加されているはず。

ちなみに、鍵はログインする側、される側のどちらでつくってもよい。
上記の手順のように、ログインする側で鍵を作って、公開鍵を相手に渡して登録してもらってもよいし、
ログインされる側で鍵を作って、秘密鍵をログインする側に渡してもよい。(レンタルサーバーなどを借りると秘密鍵が郵送されて来たりする場合がある。)
鍵は作成した際に、公開鍵の方に作成したユーザーの署名が入るだけで違いは多分ない。

sshでログインしてみる。

ssh gomokuro@gomocool.net -i ./keys/id_rsa

sshコマンドの後にログインしたいユーザー名@ホスト名でログインする。
-i で使用する秘密鍵を任意に指定できるが、-iを指定しない場合~/.ssh/id_rsaを見に行く。

また、鍵をしているが、鍵認証が上手くいかない場合は、パスワードを聞かれる。
その場合、/etc/ssh/sshd_configの、AuthorizedKeysFileの辺りを確認する。

#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile     .ssh/authorized_keys

通常は、上記のようにコメントアウトされていれば、デフォルトだが、誰かが変えている可能性もある。
そして、authorized_keysと綴りが正しいか再確認。

まとめ

ざっくりとまとめると、秘密鍵を使って公開鍵を設定したユーザーにログインできる。
その為に、どこでもいいのでペアとなる鍵を作って、ログインする側に秘密鍵を、ログインされる側に公開鍵を登録する。

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>