CentOSのsshの認証方式をパスワード認証から公開鍵認証に変更する。

CentOSのsshの認証方式をパスワード認証から公開鍵認証に変更します。実施した環境は以下です。CentOSにsshdはインストールされていて、パスワード認証が出来ているものとします。

クライアント、サーバーともログインアカウントには tak を使用しています。

鍵ファイルの作成

公開鍵ファイルと秘密鍵ファイルをクライアント側のubuntuで作成します。

[ クライアント側作業 ]
ubuntuにログインしてホームディレクトリ配下の .ssh ディレクトリに移動します。ssh-keygenコマンドで鍵生成をします。鍵の形式は RSA、ビット長は4096としました。

$ pwd
/home/tak/.ssh
$ ssh-keygen -t rsa -b 4096

鍵ファイルの名前を id_rsa.j として、パスワードの設定もしました。ログは以下のようになります。


$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tak/.ssh/id_rsa): /home/tak/.ssh/id_rsa.j ←★鍵ファイルの名前を指定
Enter passphrase (empty for no passphrase):  ←★鍵ファイルにパスワードを設定
Enter same passphrase again: 
Your identification has been saved in /home/tak/.ssh/id_rsa.j.
Your public key has been saved in /home/tak/.ssh/id_rsa.j.pub.
The key fingerprint is:
SHA256:yjDweZqZvZQ/k8jnpD8xPAWnmsFQ0F633V1yLDQCdyU tak@maria
The key's randomart image is:
+---[RSA 4096]----+
 :
 :
+----[SHA256]-----+

カレントディレクトリの配下(/home/tak/.ssh)に以下の名前で鍵ファイルが作成されます。

秘密鍵ファイル・・・id_rsa.j
公開鍵ファイル・・・id_rsa.j.pub

公開鍵ファイルのアップロード

公開鍵ファイルをCentOSにアップロードします。サーバー側の作業とクライアント側の作業があるので、それぞれ行います。

[ サーバー側作業 ]
CentOSにログインします。僕の環境ではホームディレクトリ配下に .ssh ディレクトリがなかったため新規で作成します。鍵ファイルの格納場所となるため、他のユーザーがアクセスできないように制限をつけておきます。

$ pwd
/home/tak
$ mkdir .ssh
$ chmod 700 .ssh

[ クライアント側作業 ]
scpコマンドで公開鍵ファイルをCentOSにアップロードします。CentOSのIPアドレスは伏せさせていただきました。

$ pwd
/home/tak
$ scp .ssh/id_rsa.j.pub tak@xxx.xxx.xxx.xxx:~/.ssh/

[ サーバー側作業 ]
公開鍵ファイルが /home/tak/.ssh 配下にアップロードされていることを確認します。アップロードした公開鍵ファイルを authorized_keys という名前にリネームします。権限も変えます。

$ pwd
/home/tak/.ssh
$ mv id_rsa.j.pub authorized_keys
$ chmod 600 authorized_keys

なお、今回は authorized_keys には公開鍵ファイルは1つだけですが、複数の公開鍵ファイルを登録することも出来ます(その場合は、公開鍵ファイルを authorized_keys にアペンドしていきます)。

sshd_configの編集

sshd_configの編集をrootユーザーで行います。

[ サーバー側作業 ]
sshd_configは /etc/ssh 配下にあります。必要に応じてsshd_configのバックアップをとっておいてください。

# cd /etc/ssh
# vi sshd_config

編集する内容は、PubkeyAuthentication を yes にして、PasswordAuthentication を no にします。

修正前
#PubkeyAuthentication yes

PasswordAuthentication yes

修正後
PubkeyAuthentication yes ←コメントアウトを外す

PasswordAuthentication no ←yesからnoにする

修正が出来たら、sshdを再起動します。

# systemctl restart sshd

公開鍵認証での接続

[ クライアント側作業 ]
sshでクライアントから接続します。-i オプションで秘密鍵ファイルを指定します。

$ pwd
/home/tak
$ ssh -i .ssh/id_rsa.j tak@xxx.xxx.xxx.xxx
Enter passphrase for key ‘.ssh/id_rsa.j’:

鍵ファイルのパスワードを入力して、サーバーに接続が出来ます。

なお、sshではこれで問題ないのですが、plinkだと以下のエラーとなりました。


$ plink -i .ssh/id_rsa.j tak@xxx.xxx.xxx.xxx
Unable to use key file ".ssh/id_rsa.j" (OpenSSH SSH-2 private key (old PEM format))
Using username "tak".
FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey,gssapi-keyex,gssapi-with-mic)

「old PEM format」のようです。手持ちのツールの FileZilla で鍵ファイルのフォーマット変換が出来ましたので、書いておきます。FileZilla は ubuntu上で動くFTPクライアントソフトです。

FileZilla のサイトマネージャーを開いて、プロトコルは「SFTP」、ログオンの種類を「鍵ファイル」にして接続を試みます。

接続ボタンを押下すると、鍵ファイルの変換のダイアログが出ます。

「はい」を押下します。パスワードが必要と促されるので、鍵ファイルを生成したときと同じパスワードを入力します。

新しい鍵ファイルの名前を決めて保存します。今回は id_rsa.g としました。

plinkで作り直した鍵ファイルを指定して接続してみます。

$ plink -i .ssh/id_rsa.g tak@xxx.xxx.xxx.xxx
Using username “tak”.
Passphrase for key “imported-openssh-key”:

鍵ファイルのパスワードを入力すれば、サーバーに接続が出来ます。

情報処理安全確保支援士の義務と違反したときの罰

情報処理安全確保支援士の試験に合格し登録を行うと情報処理安全確保支援士の名称を使用することができます。自分は情報処理安全確保支援士だと名乗ることができるということです。ただ名乗るだけでは寂しいので、ロゴマークの使用や徽章(バッジ)を付けることが許されます。

これらは情報処理安全確保支援士の登録とは別に別途申請が必要なので使いたい場合は自分で申請しましょう。ちなみにバッチは貸与なので情報処理安全確保支援士の登録を取り消した場合は返却が必要です(おまけに貸与手数料もかかります)。

ロゴマークの使用
徽章(バッジ)の使用

登録を済ませて情報処理安全確保支援士を名乗ることができたとして、情報処理安全確保支援士が何をするかと言うと、情報処理の促進に関する法律(情促法)では次のように定めています。

  • サイバーセキュリティに関する相談に応じ、必要な情報の提供及び助言を行う。
  • 必要に応じその取り組みの実施の状況についての調査、分析及び評価を行い、その結果に基づき指導及び助言を行う。
  • 事業者その他の電子計算機を利用する者のサイバーセキュリティの確保を支援する。

これらの業務(というか責務)を情報処理安全確保支援士は負うわけですが、今日の社会で情報処理安全確保支援士にしかできない仕事なのか?というと現状は違います。情報処理安全確保支援士は士業とはなっていますが医者や弁護士のような士業とは違い、情報処理安全確保支援士でなければできない仕事というものはありません。

逆にですが、情報処理安全確保支援士になったことで守らなければならない義務が発生します。情報処理の促進に関する法律(情促法)では情報処理安全確保支援士の義務として以下のようなことを規定しています。

・信用失墜行為の禁止(24条)
・秘密保持義務(25条)
・受講義務(26条)

「信用失墜行為の禁止」ですが24条では次のように規定されています。

(24条)
情報処理安全確保支援士は、情報処理安全確保支援士の信用を傷つけるような行為をしてはならない。

信用を傷つける行為がどのようなものかというと、明白な犯罪でない限りそのときどきの健全な社会通年に基づいて判断されるようです。信用失墜行為の禁止は国家公務員法や地方公務員法などにも規定されており、情報処理安全確保支援士が公共性が極めて高い職種であることから規定されているようです。

なお信用失墜行為の禁止に違反した場合は、大臣による情報処理安全確保支援士の登録の取り消し、または一定期間の名称の使用停止となります。

「秘密保持義務」ですが25条では次のように規定されています。

(25条)
情報処理安全確保支援士は、正当な理由がなく、その業務に関して知り得た秘密を漏らし、又は盗用してはならない。情報処理安全確保支援士でなくなった後においても、同様とする。

要は安易に人にしゃべったりしてはいけないということですが正当な理由がある場合はその限りではありません。正当な理由には「本人(秘密の主体である組織等)が同意をしている場合」および「刑事捜査のための捜査礼状が正式に出ている場合」があります。

秘密保持義務に違反した場合は、登録の取り消し、または一定期間の名称の使用停止はもちろんのこと、更に刑事罰として「1年以下の懲役又は50万円以下の罰金」の対象となります。情報処理安全確保支援士を名乗る以上、刑事罰の対象になるということは覚えておいたほうが良いでしょう。

「受講義務」ですが26条では次のように規定されています。

(26条)
情報処理安全確保支援士は、経済産業省令で定めるところにより、機構の行うサイバーセキュリティに関する講習、又はこれと同等以上の効果を有すると認められる講習として経済産業省令で定めるものを受けなければならない。

情報処理安全確保支援士は登録後3年の有効期限があり、この講習を期限内に受講し情報処理安全確保支援士自らが更新手続きを行わなければなりません。受講義務に違反した場合は、登録の取り消し、または一定期間の名称の使用停止となります。

情報処理安全確保支援士が「登録が取り消されている」もしくは「名称の使用停止中である」にもかかわらず情報処理安全確保支援士の名称を使用した場合は「30万円以下の罰金」の刑事罰の対象となることも覚えておきましょう。情報処理安全確保支援士でない人(登録をしていない人)が情報処理安全確保支援士の名称を使用した場合も「30万円以下の罰金」の対象となります。

最後に、、情報処理安全確保支援士には倫理が求められますので、以下の文章にも目を通しておいたほうが良いでしょう。

情報処理安全確保支援士倫理綱領