SSH サーバへの接続を公開鍵認証ではなく証明書認証で行うこと。
↓作業手順はこのドキュメントがわかりやすい。
support.conoha.jp
手順
sudo ssh-keygen -f /etc/ssh/ca
sudo ssh-keygen -s /etc/ssh/ca \
-I "$(whoami)@$(hostname --fqdn) user key" \
-n "$(whoami)" \
-V -5m:+3650d \
~/.ssh/id_rsa.pub
IP アドレス制限を設ける場合
sudo ssh-keygen -s /etc/ssh/ca \
-I "$(whoami)@$(hostname --fqdn) user key" \
-n "$(whoami)" \
-V -5m:+3650d \
-O source-address=$(hostname -I | tr ' ' ',') \
~/.ssh/id_rsa.pub
echo "AuthorizedPrincipalsFile %h/.ssh/authorized_principals" | sudo tee -a /etc/ssh/sshd_config
echo "TrustedUserCAKeys /etc/ssh/ca.pub" | sudo tee -a /etc/ssh/sshd_config
echo $(whoami) > ~/.ssh/authorized_principals
sudo systemctl restart ssh.service
ポイント
- CA の鍵ペアを作る
- CA の秘密鍵でクライアントの公開鍵に署名して証明書を作る
- クライアントが証明書を利用して SSH する際は
ssh -i
で秘密鍵を指定する
azureuser@ssh-client:~$ ll ~/.ssh/
total 28
drwx------ 2 azureuser azureuser 4096 Mar 1 15:04 ./
drwxr-xr-x 5 azureuser azureuser 4096 Mar 1 15:04 ../
-rw------- 1 azureuser azureuser 553 Mar 1 14:52 authorized_keys
-rw------- 1 azureuser azureuser 1679 Mar 1 14:55 id_rsa
-rw-r--r-- 1 azureuser azureuser 1503 Mar 1 15:00 id_rsa-cert.pub
-rw-r--r-- 1 azureuser azureuser 402 Mar 1 14:55 id_rsa.pub
-rw-r--r-- 1 azureuser azureuser 222 Mar 1 15:04 known_hosts
↑こういうファイル配置なら -i オプションなしで良い。
$ ssh azureuser@192.168.x.x
参考リンク