公開/秘密鍵を使用してログインすることと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も証明書をサポートしていますが、証明書は異なります。既定では、各サーバーに認証されたすべてのキーを一覧表示するのではなく、特定の認証局が署名したキーを受け入れるようにサーバーを構成します。

答え2

私はこれがサーバーの公開/秘密鍵認証に当てはまると思います。

これにより、1つのパスワード認証と1つの公開鍵認証が実行されます。

この部分は中間者攻撃に対して脆弱だと思います。

ホストキーが正しく検証されると、MitM攻撃に対して脆弱ではありません。

2番目のコマンドは、本質的にssh-copy-idコマンドが実行する操作だと思います。

はい、しかしssh-copy-id権限とselinuxコンテキストが正しいことを確認するための追加のチェックがあります。また、ネットワーク経由でpassword認証を使用してこれを行います。

ただし、-iオプションは、以前に行われなかった秘密鍵を見つけることができる場所を示します。

はい。しかし、これが/home/login_server/.ssh/id_rsaデフォルトです。

これが上記の認定バージョンであると仮定できますか?

いいえ、ファイルをコピーするだけです。ホームディレクトリが別の方法(NFS、Samba、またはその他sshfs)を介してマウントされている場合は、そのプロトコルのセキュリティに依存します。証明書は次のように異なります。

https://ef.gy/hardening-ssh

関連情報