公開鍵認証方式の設定

「root」ユーザをセキュリティ向上のため、公開鍵認証方式に変更します。
※接続先サーバ側で作成するため、秘密鍵を各クライアントに配布する形式になります。

1. SSH公開鍵の発行

(1) 暗号鍵の作成
認証鍵を作成します。

# ssh-keygen -t ed25519 -b 4096 -m PEM -C ""
もしくは、
# ssh-keygen -t rsa -b 4096 -m PEM -C ""
(ECDSA形式を作成の場合)
# ssh-keygen -t ecdsa -b 521 -m PEM -C ""

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): [Enter]
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): (任意のパスフレーズ)[Enter]
Enter same passphrase again:(任意のパスフレーズ)[Enter]
「Enter passphrase (empty for no passphrase):」および「Enter same passphrase again:」で任意のパスフレーズを入力します。

これで、「/root/.ssh」に
  • id_ed25519
  • id_ed25519.pub
もしくは
  • id_rsa
  • id_rsa.pub
の2つの鍵が作成されます。

(2) 公開鍵の作成
公開鍵「id_ed25519.pub」の登録を行います。
# cd .ssh
# touch authorized_keys 
# chmod 600 authorized_keys
# cat id_ed25519.pub >> authorized_keys
# rm id_ed25519.pub

(3) 秘密鍵のダウンロード
  • 秘密鍵「id_ed25519」をクライアントPC等にダウンロードします。
  • ダウンロードした「id_ed25519」のファイル名を「○○○○○○.pem」のように任意のファイル名に変更します。(拡張子は「.pem」)
  • ダウンロードが完了したら、秘密鍵「id_ed25519」を削除します。

(4) SSH鍵の変換
SFTPを使用する場合には、秘密鍵をPEMからPPK形式に変換する必要があります。

「4. SFTPを使用するためのSSH鍵の変換」を参照して下さい。

2. sshdの設定

「root」ユーザのみ公開鍵認証を強制して、一般ユーザはパスワード認証とします。

# vi /etc/ssh/sshd_config

以下のように設定します。
PermitRootLogin prohibit-password
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

sshd設定のチェックを行います。
# /usr/sbin/sshd -t
何も表示されなければOKです。

また、以下のように表示された場合は、SSHのアップデートでRSA/SHA1が使用できなくなりました。
main: sshd: ssh-rsa algorithm is disabled
この場合には、明示的に「ssh_host_ed25519_key」を指定するようにします。
# vi /etc/ssh/sshd_config
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

sshdのサービスを再起動します。
# /usr/bin/systemctl restart sshd.service

3. 一般ユーザの場合

一般ユーザに対して公開鍵認証を行う場合には、
  1. 「1. SSH公開鍵の発行」の方法で認証鍵の発行を行います。
  2. 「sshd」の設定を行います。
# vi /etc/ssh/sshd_config

パスワード認証を「no」にします。
PasswordAuthentication no

なお、特定のユーザのみ公開鍵認証方式にしたい場合には、sshd_configの末尾に以下の行を追加します。
Match User contents
PasswordAuthentication no
※「contents」ユーザに対してのみ公開鍵認証を行います。

4. SFTPを使用するためのSSH鍵の変換

上記で作成したSSH鍵はPEM形式で、SFTPでは使用できません。
そこで、SFTPに使用できるPPK形式に変換する必要があります。
この変換には、puttygenを使用します。

(1) puttygenのダウンロード
PuTTY Download Pageより、「puttygen.exe」をダウンロードします。

(2) 変換作業
  • puttygen.exeを実行します。
  • メニューバーの「Converions(変換)」-「Import Key(鍵のインポート)」を実行します。
  • SSH鍵のファイル名を選択します。
  • SSH鍵のパスフレーズを入力して「OK」ボタンをクリックします。
  • SSH鍵が正常に読み込まれたら「Save private key(秘密鍵の保存)」ボタンをクリックします。
  • 任意のファイル名を付けて保存します。(拡張子が「.ppk」となります。)

※ED25519キーをインポートする場合は、パスフレーズを空にする必要があります。
  • 元の鍵ファイルをコピーします。(ファイル名を「id_25519_nopwd」とします。)
# cp id_ed25519{,_nopwd} 
  • パスフレーズを削除します。
# ssh-keygen -p -f id_ed25519_nopwd
Enter old passphrase:(現在のパスワード)
Key has comment ''
Enter new passphrase (empty for no passphrase):(空白のまま)
Enter same passphrase again:(空白のまま)
Your identification has been saved with the new passphrase.
※変換したファイルにパスフレーズを付けたい場合には、保存する際にパスフレーズを登録します。

(3) SFTPクライアントソフトについて
秘密鍵に対応しているSFTPクライアントソフトには、「WinSCP」(WinSCP Downloads)があります。

「WinSCP」の秘密鍵の指定欄に上記で変換したPPKファイルを指定します。


最終更新:2024年08月05日 10:44