設定 - SSHの公開鍵認証
概要
パスワードでのログインはランダムで試すことで突破されることもあるので、セキュリティを向上させるため公開鍵認証を行う。
公開鍵認証は秘密鍵を持つ人だけがログイン出来るようになる設定である。
公開鍵と秘密鍵の作成
CentOS / SUSE
CentOSおよびSUSEには、標準でOpenSSHがインストールされている。
秘密鍵と公開鍵を作成するため、以下のコマンドを実行する。
ssh-keygen -t rsa -b 4096
# 公開鍵および秘密鍵の入力
Generating public/private rsa key pair.
Enter file in which to save the key (/home/${ユーザ名}/.ssh/id_rsa): # 空(標準ディレクトリ)または任意のパスを入力
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:KUTA1tKak8l0ibHGqq4XWOPgRKfyRCfeBGxrWssdPoY ssh_client
The key's randomart image is:
+---[RSA 4096]----+
| ..oo*.. |
| .=oOo= |
|.+oX+B. |
|ooOoX. . |
|+%.* o. S |
|ooE = . |
|. o . |
|. . |
|oo |
+----[SHA256]-----+
Windows
Windows 10には、標準でOpenSSHがインストールされているが、ここでは、TeraTermを使用する。
TeraTermを起動して、[設定]-[SSH鍵生成] をクリックする。
[鍵の種類]はRSAを選択する。
[ビット数]は2048を入力して、[生成]ボタンを押下すると、鍵を生成しましたと出力される。
[鍵のパスフレーズ]と[パスフレーズの確認]にパスワードを入力する。
[公開鍵の保存](id_rsa.pubファイル)と[秘密鍵の保存](id_rsaファイル)をクリックして、
それぞれの鍵をクライアントPCの任意のフォルダに保存する。
- 注意
- 鍵のパスフレーズ無しの場合は秘密鍵だけでログインする。
- この設定完了後に秘密鍵(id_rsa)を紛失するとログイン出来なくなるため気をつけること。
- また、秘密鍵が第三者に漏洩すると、ラズパイにログインされてしまうので厳重に保管すること。
公開鍵を~/.ssh/authorized_keysに保存
以下のコマンドを実行して、ホームディレクトリに.sshディレクトリを作成する。
mkdir .ssh
以下のコマンドを実行して、.sshディレクトリのパーミッションを変更する
chmod 700 .ssh
以下のコマンドを入力して、.sshディレクトリの下に公開鍵ファイルを作成して、テキストエディタで開く。
クライアントPCに保存したid_rsa.pubファイルをテキストエディタで開いて全てコピーする。
コピーした文字列を~/.ssh/authorized_keysファイルにペーストして保存する。
nano ~/.ssh/authorized_keys
または、以下のコマンドを実行してauhorizedファイルに追記することもできる。
cat id_rsa.pub >> ~/.ssh/authorized_keys
以下のコマンドを入力して、authorized_keysファイルのパーミッションを変更する。
chmod 600 ~/.ssh/authorized_keys
rootログインの禁止
SSH接続時、rootユーザでのログインを禁止するため、以下のコマンドを実行する。
sudo nano /etc/ssh/sshd_config
テキストエディタに切り替わるので、一番下に以下のコードを追加して保存する。
PermitRootLogin no
SSHの設定変更
以下のコマンドを入力して、sshd_configファイルを開く。
sudo nano /etc/ssh/sshd_config
#PasswordAuthentication yesの下の行に、PasswordAuthentication noを追加して保存する。
以下のコマンドを入力して、SSHを再起動する。
sudo systemctl restart sshd
これでパスワードログインが出来なくなり、秘密鍵を持っている人だけがログイン出来るようになる。
Powershellまたはコマンドプロンプトから接続
RLoginやTera Termを使用せずに、Powershellやコマンドプロンプトを使用してSSH接続する場合は、以下のように実行する。
ssh -p ポート番号 -i 秘密鍵を保存しているフォルダパス/id_rsa ユーザ名@ホスト名(または、IPアドレス)