ITメモ
CentOS / セントオーエス




【CentOS】「SSHサーバー」の鍵認証の設定

【CentOS】
「SSHサーバー」の鍵認証の設定




「SSHサーバー」へのアクセスを
「鍵認証」のみ可能とする設定をするには、
「暗号化キー」を作成して、
「サーバー側」と、
アクセスする「PC」などの「クライアント側」に、
それぞれ「暗号キー」を配置する必要がある。



「SSHサーバー」の「鍵認証」を「設定」をする流れ


「鍵認証」設定のは、
比較的簡単な操作だが、
色々と「条件」があるので、
その「条件」を満たさないで、
「暗号化キー」を作成したり、
「鍵認証」を設定しても、
「鍵認証」が機能してくれないことが多い。


下記の「手順」の後に記述している
「「鍵認証」を設定する時に必須の情報」は必読。



「SSHサーバー」の「鍵認証」設定をする手順

・「SSHサーバー側」で、「鍵ペア」の作成

・クライアントPCに、秘密鍵「id_rsa」を転送する。
FTPでも、USBでも、秘密鍵「id_rsa」を「SSHサーバー」にアクセスする「PC」に保存すれば「OK」。

・秘密鍵「id_rsa」を使って、「ssh」でログインする

・「SSHサーバー」への「パスワード認証」を禁止する




「鍵認証」を設定する時に必須の情報

・鍵は、「アクセスする各ユーザー」で「ログイン」して、作成しなければならない。(他のユーザーでログインして一斉に鍵作成をしても鍵は使えない。)
・鍵の置き場所は、各ユーザーのホームディレクトリに、「.ssh」ディレクトリを作成して保存する。
・各ユーザーのホームディレクトリのパーミッションは、「700」「711」「755」のいずれか、所有者以外の書き込みが許可されていると、鍵認証でアクセスできない。
・「.ssh」ディレクトリのパーミッションは「700」。
・公開鍵「authorized_keys」ファイルのパーミッションは「600」。
・秘密鍵「id_rsa」ファイルのパーミッションは「600」。



Back

「鍵認証」の「暗号キー(鍵ペア)」を「作成」「設置」する方法


「鍵認証」の設定は、
「鍵ペア」を作成し、
「サーバー側」「アクセスする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