CentOS 7 ~SSH接続(公開鍵認証)~

サーバー

鍵認証について

SSH接続の際、ユーザー名とパスワードを入力していたが、セキュリティ的にはこれでも甘いらしい。この2つのデータが漏れてしまったらどこからでも接続されてしまうので、ここをふさいでおく必要がある。そこで登場するのが今回の公開鍵認証。

鍵は秘密鍵と公開鍵の2種類。正確には「RSA秘密鍵」と「RSA公開鍵」と言うらしいが細かいところはわかりません。
この秘密鍵はクライアント側が保有し、公開鍵はサーバー側が保有する。
公開鍵はデータの暗号化だけを行い、秘密鍵は複号化だけを行うことで成り立っている。役割が違うので2つがそろわないと情報がみれないみたい。

鍵の作成

まずは鍵の作成する。コマンドで作ることもできるが、いつも「Tera Term」を使っているのでこの中で作成。「Tera Term」の設定-SSH鍵作成を選ぶ。

すべてデフォルトのまま鍵を作成すると鍵が作成される。それぞれ適当な場所に保存しておく。

公開鍵のアップロード

一度「Tera Term」でユーザー名パスワードを使いサーバーにログインする。そして公開鍵をアップロード。アップロード方法は先ほど保存した公開鍵のファイルを「Tera Term」のウインドウ内にドラッグドロップをする。そうすると下のようなウィンドウが開く。ここでも初期値のまま「OK」をクリック。

サーバー内の公開鍵設定

まずは公開鍵を保管しておく場所を作る。mkdir .sshでディレクトリを作成。そしてそのディレクトリのパーミッションは所有者のみが触れるようにするためchmod 700 .sshと入力する。
また先ほどの公開鍵のファイルがきちんと転送されているかどうか中身を確認。最初いつもの調子でllと打ったら公開鍵しか見つからないですこし焦ったのは内緒です。
隠しファイル等を見れるようにls -laと入力すると作成した.sshのディレクトリ、公開鍵を確認することができた。

この公開鍵を先ほどの.sshのディレクトリ内に移動。mv id_rsa.pub .ssh/authorized_keyとして移動するときに名前を変更しておく。

きちんとファイルが入っているかどうか中身の確認。

鍵認証によるログイン

さっそく「Tera Term」で鍵認証でログインしてみる。ユーザー名と鍵作成時に設定したパスフレーズを入力。そして秘密鍵のファイル先を指定していざログイン。

無事にサーバーへログインすることができました。

sshd_configの編集

まだこの状態ではパスワード入力によるログインができてしまうので、これを禁止してセキュリティを高める。vi /etc/ssh/sshd_configと入力しエディタを立ち上げる。下の表にある上2つはssh接続の時にすでに変更済みなので3つ目のみ変更。

初期値変更意味
#PermitRootLogin yesPermitRootLogin norootログイン
#PermitEmptyPasswords noPermitEmptyPasswords no空のパスワード禁止
#PasswordAuthentication yesPasswordAuthentication noパスワード認証許可

設定ファイルを触ったので忘れてはいけないソフトの再起動。systemctl restart sshd.service

コメント