authorized_keys/known_hosts ファイルを用いない SSH 公開鍵認証
[最終更新] (2019/06/03 00:30:52)
最近の投稿
注目の記事

概要

SSH 認証においても HTTP サーバ等で利用するオレオレ (サーバ/クライアント) 証明書と同様に CA を利用できます。本ページでは CA は独自に構築します。

authorized_keys を用いないクライアント認証

SSH サーバ側の authorized_keys ファイルを更新する必要がないため管理も簡易化されます。共通の秘密鍵を複数人で使い回す必要もなくなります。

CA の構築 (サーバ側)

ssh-keygen -f ca
  • ca
  • ca.pub

秘密鍵と公開鍵の生成 (クライアント側)

ssh-keygen -f id_rsa.20180808
  • id_rsa.20180808
  • id_rsa.20180808.pub

公開鍵の署名 (サーバ側)

クライアントから渡された公開鍵を authorized_keys に書き込むのではなく CA の秘密鍵で署名します。

ssh-keygen -s ca -I my-key-id -n myuser,myuser2 -z 1 id_rsa.20180808.pub
  • id_rsa.20180808-cert.pub

-s で CA の秘密鍵を指定します。-I で署名対象の ID を決めて指定します。-z で後に失効できるように連番を付与します。-n でログイン可能なユーザを指定します。

$ ssh-keygen -Lf id_rsa.20180808-cert.pub
id_rsa.20180808-cert.pub:
        Type: ssh-rsa-cert-v01@openssh.com user certificate
        Public key: RSA-CERT SHA256:lQEUisUKgQ5O4MeGfT5qukh65/jXQppfwOEOX8p3ze0
        Signing CA: RSA SHA256:BRt1XBvnoBQuSBPltoZ+idQAVj4CDT5MlfTcc2Xf4YE
        Key ID: "my-key-id"
        Serial: 1
        Valid: forever
        Principals: 
                myuser
                myuser2
        Critical Options: (none)
        Extensions: 
                permit-X11-forwarding
                permit-agent-forwarding
                permit-port-forwarding
                permit-pty
                permit-user-rc

CA で署名された公開鍵を持つクライアントからの接続を許可するように設定 (サーバ側)

AuthorizedKeysFile での認証ができないように /dev/null に向けています。

sudo su -l
echo 'TrustedUserCAKeys /etc/ssh/ca.pub' >> /etc/ssh/sshd_config
echo 'AuthorizedKeysFile /dev/null' >> /etc/ssh/sshd_config
systemctl restart sshd.service
tailf /var/log/auth.log

サーバへの接続 (クライアント側)

どの鍵で認証できたかは以下のようなコマンドで確認できます。

ssh -v -i id_rsa.20180808 myuser@vagrant "echo" 2>&1 | egrep '(Trying private key|Authentication succeeded)'
  • 秘密鍵だけでなく署名された証明書が同じディレクトリに必要であることと id_rsa.20180808 id_rsa.20180808-cert.pub
  • 署名された証明書で許可されている Principals ユーザにのみログインできることに注意します。

known_hosts を用いないサーバ認証

この続きが気になる方は

authorized_keys/known_hosts ファイルを用いない SSH 公開鍵認証

残り文字数は全体の約 41 %
tybot
100 円
関連ページ