イントラやFWなどで制限している場合を除いて、SSH接続するときの認証は公開鍵認証を使用すると思います。
キーペアを作成するだけなら ssh-keygen を打てば良いのですが、これまでなんとなく使っていた ssh-keygen でキーペアを作成する方法をなんとなくまとめてみます。
ssh-keygen でキーペアを作成
まずは代表的なオプションをずらり。
- -t 暗号化の種類
rsa とか ecdsa とか - -b 鍵長
2048 とか 4096 とか - -C コメント
公開鍵の一番後ろにつくコメントを指定する。 - -p 秘密鍵のパスフレーズを変更する
- -l フィンガープリントの表示
- -f 鍵ファイル名の指定
-p とか -l を使うときに併用してファイル名を指定する(指定しないと受け付けてくれない) - -R 指定したホストの鍵をknow_hostsから削除
基本的に使うオプションは上から3つまでかなあと思う。鍵長もデフォルトで2048になっているし指定する必要もないのだけど、なんとなく指定してしまう。。。
あとはコメントを指定できる -C が結構便利で、デフォルトでは「ユーザ名@ホスト名」がコメントとしてつくけど、あんまり残したくないなぁというときに指定すると良いと思う。何もコメントをつけたくない場合は、-C "" を指定すれば何も残らない。
ということで、鍵長は2048でよくてコメントもデフォルトでよいのであれば、 -t だけで良いですね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/testuser/.ssh/id_rsa): ★作成する秘密鍵、公開鍵の保存先を指定する(デフォルトで良い場合はそのままエンター) /home/testuser/.ssh/id_rsa already exists. ★同名ファイルの鍵が存在している場合は表示されるので Overwrite (y/n)? y ★上書きして良い場合は y を押して進む Enter passphrase (empty for no passphrase): ★パスフレーズの入力 Enter same passphrase again: ★再度 Your identification has been saved in /home/testuser/.ssh/id_rsa. Your public key has been saved in /home/testuser/.ssh/id_rsa.pub. The key fingerprint is: SHA256:NMHXlauX+rIht2uPeyP8/bLEm2fdm0SJgTafMfPw4bM testuser@Ce74-lsws ★これと同じコメントが公開鍵にもつく The key's randomart image is: +---[RSA 2048]----+ ★指定したタイプと鍵長 | .. . ... | | ... o . | | o. + * o | | . .. o & o| | S = O | | ..+ o| | ..oooEo| | o*==+*| | .*@BO=| +----[SHA256]-----+ |
という感じで、秘密鍵と公開鍵が生成されます。あっという間です。
コメントを付けない場合は以下。
1 2 3 4 5 6 7 8 9 10 11 |
$ ssh-keygen -t rsa -C "" Generating public/private rsa key pair. Enter file in which to save the key (/home/testuser/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/testuser/.ssh/id_rsa. Your public key has been saved in /home/testuser/.ssh/id_rsa.pub. The key fingerprint is: SHA256:1vsBes7YkPFn7XH+f1EhlO5cLg3DksrCy1vbP5kde8A ★ついてませんね The key's randomart image is: … |
次に、パスフレーズを変更してみます。
1 2 3 4 5 |
$ ssh-keygen -p -f id_rsa Enter old passphrase: ★古いパスフレーズを入力 Enter new passphrase (empty for no passphrase): ★新しいパスフレーズを入力 Enter same passphrase again: ★再度 Your identification has been saved with the new passphrase. |
オプションは -pf とつなげても大丈夫ですが、逆(-fp)だと弾かれます。
このくらいでしょうか。
-R の know_hosts からの削除も実ファイルから削除できますし。ssh-keygen でやる必要もなしかと。
また、今回はパスフレーズを設定して鍵ペアを作成しましたが、パスフレーズを設定しないで鍵を作成して、パスワード不要でリモートサーバにログインできるようにする方法もあります。以下のエントリで紹介していますので、興味があればどうぞ~。
以上です。
↓↓↓ 持っていると便利な一冊。