サーバー上で公開鍵と秘密鍵を作成する方法

更新日:2019/07/29

SSHを使用してサーバーで作業をする場合、パスワードのみの接続よりも公開鍵を用いた認証の方がセキュリティ的に安心です。

そこでここでは、サーバー上で公開鍵と秘密鍵の作成および配置について、順を追って解説していきます。

最終的な構成:

(1) サーバー上の/home/ユーザー名/.ssh/ に公開鍵(authorized_keys)を設置

(2) ローカルPCで使用する秘密鍵を用意

 

ssh-keygenコマンドを使用

サーバー上で鍵を作成するには、ssh-keygenコマンドを使用します。
このコマンドで公開鍵と秘密鍵を、同時に作成することができます。

ssh-keygen -t 鍵タイプ -b 鍵の長さ

現在はSSH2が主流で、鍵タイプはrsaがデフォルトになっているサーバーが多いようです。
rsaでの鍵の長さは、デフォルトでは2048ビットになっていて、この値にしておけば今のところ問題ありません。

そのため今回は、次のパラメーターを指定します。
(デフォルト値なので、そもそもパラメータ指定がいらないですが…)

鍵タイプ:rsa(デフォルト)
鍵の長さ:2048(デフォルト)

 

鍵の生成例

鍵を生成したいユーザーでログインし、コマンドを実行します。

$ ssh-keygen -t rsa -b 2048

鍵のファイル名を求められるので、デフォルトで問題なければエンターを入力します。

Generating public/private rsa key pair.
Enter file in which to save the key (/home/ユーザー名/.ssh/id_rsa): ↓エンター

パスフレーズを入力します。
エンターのみの場合は、SSH接続時にパスフレーズ入力を省略できます。
セキュリティを高めるためにも、パスフレーズは指定しておいたほうがいいでしょう。

Enter passphrase (empty for no passphrase):パスフレーズを入力
Enter same passphrase again:パスフレーズを再入力

次のようなメッセージが表示されたら、成功です。

Your identification has been saved in /home/ユーザー名/.ssh/id_rsa.<=秘密鍵
Your public key has been saved in /home/ユーザー名/.ssh/id_rsa.pub.<=公開鍵
The key fingerprint is:
SHA256:hjNXRLgn1bsX2+EvtovUw3R1w/uiEs0HUtvQNzGKP8F @123-45-7-78
The keys randomart image is:

+---[RSA 2048]----+
| .|
| . +|
| ..=.|
| . +. ..=+o|
| + S.=o...*+|
| =.*o*+.E=+|
| o....==.+|
| o .++Xo.|
| +=+=B.|
+----[SHA256]-----+

デフォルトでは、.sshディレクトリの下に、『id_rsa』と『id_rsa.pub』が生成されます。

id_rsa:秘密鍵 接続元(パソコンなど)に後でコピー
id_rsa.pub:公開鍵 『authorized_keys』という名前に変更

id_rsa.pubの名前変更(コピー)を行うさいに、ファイルとディレクトリのパーミッションも変更しておきます。

$ cd /home/ユーザー名/.ssh
$ cp id_rsa.pub authorized_keys
$ chmod 700 ~/.ssh/
$ chmod 600 ~/.ssh/authorized_keys

更新日:2019/07/29

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。