「鍵認証」の設定は、
「鍵ペア」を作成し、
「サーバー側」「アクセスするPC側」に配置することで、
「鍵認証」が可能となる。
「鍵ペア」の作成
「鍵ペア(暗号キー)」は、
必ず「サーバー側」に登録されている「各ユーザー(アカウント)」にログインして作成する。
遠隔からアクセスする「PC」からは、
その「ユーザー名(アカウント名)」で、
アクセスするようになる。
「鍵ペア(暗号キー)」を作成するコマンド
ssh-keygen -t rsa
「鍵ペア(暗号キー)」を作成コマンドを実行すると、
「保存先」「鍵ペア名」「パスフレーズ(パスワード)」を
入力するように求められる。
・「鍵ペア」の「名前」=「id_rsa」と入力する
・「保存先」=「Enter」キーを押すだけで良い(作成後、保存先が表示される。「~/.ssh」でも良い)
・「パスフレーズ(パスワード)」=忘れにくいものを設定。「ssh」で最初にアクセスするときに入力を求められ、後は凄くたまに必要になる
「保存先」を入力すると、
「エラー」となり、
「鍵ペア(暗号キー)」が作成できないことがある。
その時は「Enter」キーを押すだけにすると作成できる。
同じパスフレーズを2回入力することで、「鍵ペア」が作成される。
作成される「鍵ペア」は、
・公開鍵「id_rsa.pub」
・秘密鍵「id_rsa」
の2ファイルが作成される。
種類 | 鍵ファイル名 | 保存先 |
公開鍵 | id_rsa.pub | 「SSHサーバー」に保存する |
秘密鍵 | id_rsa | 「SSHサーバー」にアクセスする「PC」のユーザーディレクトリ内「.ssh」ディレクトリに保存する |
公開鍵「id_rsa.pub」を「~/.ssh」ディレクトリに移動する
ファイル名を変更して、ディレクトリを移動するコマンド
mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
公開鍵「id_rsa.pub」を「authorized_keys」というファイル名に変更して、SSHサーバーに保存すると、
SSH鍵認証時に、「authorized_keys」ファイルが参照され、鍵を照合する。
鍵を追加する場合、「authorized_keys」ファイルに追記する。
すでに、「authorized_keys」ファイルがある場合は、公開鍵「id_rsa.pub」の内容を追記する。
「~/.ssh/authorized_keys」ファイルのパーミッションを変更する。
「鍵ペア(暗号キー)」は、
「アクセス」を制限する「パーミッション」にしておかないと使用できない。
「パーミッション」は「600」に設定する。
「パーミッション」を変更するコマンド
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa
秘密鍵をクライアント側に転送する
サーバー側で作成した秘密鍵をクライアント側にファイル転送すると、クライアントから対象サーバーに、鍵認証でログイン出来る。
クライアント側に「~/.ssh」ディレクトリを作成する
mkdir ~/.ssh
「~/.ssh」ディレクトリのパーミッションを変更する
chmod 700 ~/.ssh
秘密鍵「id_rsa」を「~/.ssh」ディレクトリに移す
FTPでも、USBでも良いので、秘密鍵を移せればOK。
秘密鍵「id_rsa」(~/.ssh/id_rsa)」ファイルのパーミッションを変更する。
アクセスする「PC」へ移したら、
「パーミッション」を変更する。
「パーミッション」を変更するコマンド
chmod 600 ~/.ssh/id_rsa
秘密鍵でSSHログインする
「ssh」コマンドを入力して、
リモートアクセスしてみる。
設定した「パスフレーズ(パスワード)」を求められるので、
「パスフレーズ(パスワード)」を入力して、
問題なければSSHログインができる。
「リモートアクセス」する「ssh」コマンド
ssh -i ~/.ssh/id_rsa ユーザー名@IPアドレスかドメイン名
or
ssh ユーザー名@IPアドレスかドメイン名
SSH サーバーへのパスワード認証を禁止する
SSH鍵認証にした場合、SSH サーバーへのパスワード認証を禁止することで、よりセキュアな環境とすることができる。
「SSHサーバー」の設定
vi /etc/ssh/sshd_config
パスワード認証不可に変更
PasswordAuthentication no
SSHサーバーを再起動する
systemctl restart sshd
Back