付録:ssh x 鍵を調査
- 注意:
- 本設定は検証のため、実運用では使用しないこと。
- sshd_configの設定にもよるので、参考として、確認。
検証のポイント
- ユーザー名付きホスト指定のsshをかけた時、誰のどこの秘密鍵が使われるのか?
- 受け側の公開鍵は誰のどこの鍵が使われるの?
結論
- ユーザー名付きホスト指定を使用した場合、鍵の指定無しでsshをかけると、実行ユーザーの秘密鍵が使用される。
- 指定ユーザーの鍵は使用されない。
- このとき、リモートの公開鍵は、指定したユーザーのauthorized_keysが使用される。
つまり?
- ユーザー名付きホスト指定を使ってsshをする場合、実行ユーザーの秘密鍵を、リモートのユーザーのauthorized_keysに登録する必要がある。
ちなみに、検証関わらず、リモートのユーザーの権限を代理の実行ユーザーに与えていることになるので、注意。
環境
- vagrant(almalinux/9)
- host1
- client(100)
- user:first
- host2
- server(101)
firstユーザー作成とパスワード設定
useradd firstとpasswd firstでユーザー作成。- 作成先サーバーとアクセス元サーバーの両方で
firstを用意。
#2 as root
useradd first
passwd first
#1 as root
useradd first
firstのSSH鍵ペア作成と登録
ssh-keygen -t ed25519で秘密鍵~/.ssh/id_ed25519と公開鍵を生成。ssh-copy-idで公開鍵を相手サーバーの~/.ssh/authorized_keysに登録。
su - first
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N "" -q
chmod 600 ~/.ssh/id_ed25519
ssh-copy-id -i ~/.ssh/id_ed25519.pub first@172.17.64.101
接続検証(firstユーザー)
- 鍵指定なし
ssh -v 172.17.64.101や、鍵指定ありssh -i ~/.ssh/id_ed25519でテスト。
# as first user
ssh -v 172.17.64.101
ssh -v -i .ssh/id_ed25519 first@172.17.64.101
# l /home/first/.ssh/id_ed25519
# r /home/first/.ssh/authorized_keys
# => firstの秘密鍵、firstの公開鍵
検証
# as root
ssh 172.17.64.101
# => 不通
ssh -v -i /home/first/.ssh/id_ed25519 first@172.17.64.101
# l /home/first/.ssh/id_ed25519
# r /home/first/.ssh/authorized_keys
ssh first@172.17.64.101
# => password auth(first's password)
rootの接続許可
/etc/ssh/sshd_configにPermitRootLogin yesを追記。systemctl restart sshdで反映。- rootパスワードを設定して、root→rootのパスワード接続確認。
# as root @ server
# add PermitRootLogin yes to the /etc/ssh/sshd_config file.
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
systemctl restart sshd
passwd
検証
# as root
ssh 172.17.64.101
# => password auth(root's password)
# as root
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N "" -q
ssh-copy-id -i ~/.ssh/id_ed25519.pub 172.17.64.101; echo ${?}
root鍵でfirstに接続を試みる
# as root
ssh -v 172.17.64.101
# l /root/.ssh/id_ed25519
# r /root/.ssh/authorized_keys
ssh -v first@172.17.64.101
# password auth(first's password)
ssh -v -i /home/first/.ssh/id_ed25519 first@172.17.64.101
# l /home/first/.ssh/id_ed25519
# r /home/first/.ssh/authorized_keys
ssh -v -i /root/.ssh/id_ed25519 first@172.17.64.101
# attempt /root/.ssh/id_ed25519
# Next authentication method: passwordに切り替わった。
# => password auth(first's password)
rootの秘密鍵を指定してfirst@172.17.64.101へ接続すると、鍵が一致しないためパスワード認証にフォールバック。
root鍵をfirstのauthorized_keysに追記
# as root
cat /root/.ssh/authorized_keys >> /home/first/.ssh/authorized_keys
検証
- rootが自身の秘密鍵を使い、
first@172.17.64.101へ鍵認証の確認。
# as root
ssh -v first@172.17.64.101
ssh -v -i /root/.ssh/id_ed25519 first@172.17.64.101
# l /root/.ssh/id_ed25519
# r /home/first/.ssh/authorized_keys