公開/秘密鍵を使用してログインすることとSSHで証明書を使用することの違い

公開/秘密鍵を使用してログインすることとSSHで証明書を使用することの違い

SSH接続を確立するために使用する2つのプロセス間の違いを確認したいと思います。

最初のコマンドシーケンスでは、次のことを行います。

ssh-keygen -t rsa
ssh-copy-id user@ip
ssh user@ip

私はこれがサーバーの公開/秘密鍵認証に当てはまると思います。この部分は中間者攻撃に対して脆弱だと思います。

その他の順序は次のとおりです。

ssh-keygen -t rsa 
cat /home/login_server/.ssh/id_rsa.pub >> /home/login_server/.ssh/authorized_keys
ssh -i ~/.ssh/id_rsa user@ip -o VisualHostKey=yes

2番目のコマンドは、本質的にssh-copy-idコマンドが実行する操作だと思います。ただし、-iオプションは、以前に行われなかった秘密鍵を見つけることができる場所を示します。これが上記の認定バージョンであると仮定できますか?

ベストアンサー1

使用した2つの方法は同様であり、同じ認証メカニズムを使用します。具体的な違いは次のとおりです。

  • ssh-copy-id user@ipuser@ipターゲットシステムにまだ認証されていないローカルキーをコピーしますが、catコマンドは作成したばかりのキーのみをコピーします。
  • ssh user@ip使用可能なすべての認証キーが試行され、指定されたssh -i ...キーのみが使用されます。

MITMの問題は、自分のキーではなくホストキーに関連しています。VisualHostKey(私たち人間の場合)比較がより簡単なので役立ちます。ただし、これはさまざまな認証メカニズムとは何の関係もありません。

SSHも証明書をサポートしていますが、証明書は異なります。既定では、各サーバーに認証されたすべてのキーを一覧表示するのではなく、特定の認証局が署名したキーを受け入れるようにサーバーを構成します。

おすすめ記事