SSHキーの設定方法
SSHキーの動作方法
SSHキーとは、個人鍵(private key)と公開鍵(public key)を使ってユーザー認証を行う方法です。個人鍵と公開鍵は密接に関連しており、互いに認識できるようになっています。SSHキーを作成すると、両方の鍵が作成されます。その後、公開鍵はサーバーに配置され、個人鍵はクライアントに保存されます。クライアントがサーバーにログインする際、クライアントは個人鍵を使って認証要求を送信します。サーバーは、クライアントの個人鍵がサーバー上の公開鍵と一致するかどうかを確認し、一致すればログインが許可されます。
ステップ1 — RSAキーのペアを作成
最初に、クライアントのマシンでSSHキーのペアを作成します。
ssh-keygen -t rsa
ステップ2 — キーとパスフレーズの保存
キーを作成するためにコマンドを入力すると、いくつかの質問に答える必要があります:
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Enterキーを押して、デフォルトの場所(ユーザーフォルダ内)に保存します(この例ではユーザー名は「demo」)。
Enter passphrase (empty for no passphrase):
パスフレーズを使用するかどうかはあなたの選択です。パスフレーズを入力することで、個人鍵を保護できます。もし個人鍵が失われたり、盗まれたりした場合でも、パスフレーズがわからなければ誰もログインできません。パスフレーズの唯一の欠点は、SSHキーでサーバーにログインするたびにパスフレーズを入力する必要があることです。
キー作成プロセスは次のようになります:
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/demo/.ssh/id_rsa.
Your public key has been saved in /home/demo/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@a
The key's randomart image is:
+--[ RSA 2048]----+
| .oo. |
| . o.E |
| + . o |
| . = = . |
| = S = . |
| o + = + |
| . o + o . |
| . o |
| |
+-----------------+
公開鍵は/home/demo/.ssh/id_rsa.pub
に、個人鍵は/home/demo/.ssh/id_rsa
に保存されます。
ステップ3 — 公開鍵をコピー
SSHキーが作成されたら、公開鍵をサーバーに配置する必要があります。
公開鍵をサーバーのauthorized_keys
ファイルにコピーするには、ssh-copy-id
コマンドを使用します:
ssh-copy-id [email protected]
別の方法として、次のコマンドを使用することもできます:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
次のような結果が表示されます:
The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
これで、[email protected]
サーバーにパスワードなしでログインできるようになりました。ただし、パスフレーズを設定している場合は、ログイン時にパスフレーズを入力する必要があります(次回以降も同様です)。
ステップ4 — rootアカウントのパスワードでのSSHログインを無効にする
SSHキーをサーバーにコピーしてログインできるようになったら、rootアカウントに対するパスワードでのログインを無効にして、SSHキーでのログインのみを許可する設定を行うことができます。
SSH設定ファイルを開きます:
sudo nano /etc/ssh/sshd_config
次の行を変更します:
PermitRootLogin without-password
SSHを再起動します。
注意 — サーバーの.sshディレクトリの権限を確認
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
これで完了です。
出典: Digital Ocean