付録:ssh x 鍵を調査

  • 注意:
    • 本設定は検証のため、実運用では使用しないこと。
    • sshd_configの設定にもよるので、参考として、確認。

検証のポイント

  • ユーザー名付きホスト指定のsshをかけた時、誰のどこの秘密鍵が使われるのか?
  • 受け側の公開鍵は誰のどこの鍵が使われるの?

結論

  • ユーザー名付きホスト指定を使用した場合、鍵の指定無しでsshをかけると、実行ユーザーの秘密鍵が使用される。
    • 指定ユーザーの鍵は使用されない。
  • このとき、リモートの公開鍵は、指定したユーザーのauthorized_keysが使用される。

つまり?

  • ユーザー名付きホスト指定を使ってsshをする場合、実行ユーザーの秘密鍵を、リモートのユーザーのauthorized_keysに登録する必要がある。

ちなみに、検証関わらず、リモートのユーザーの権限を代理の実行ユーザーに与えていることになるので、注意。

環境

  • vagrant(almalinux/9)
  • host1
    • client(100)
    • user:first
  • host2
    • server(101)

firstユーザー作成とパスワード設定

  • useradd firstpasswd 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_configPermitRootLogin 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
|