回答:
秘密鍵に設定できるパスフレーズは、SSHサーバーまたはその接続とは無関係です。パスフレーズを秘密鍵に設定することは、秘密鍵が盗まれた場合に第三者がリモートシェルにアクセスできないようにするために、鍵の所有者が取るセキュリティ対策にすぎません。
残念ながら、ユーザーに自分の秘密鍵をパスフレーズで保護するように強制することはできません。リモートSSHサーバーへのアクセスを自動化するために、保護されていない秘密鍵が必要になる場合があります。このような場合に私が強く推奨する習慣の1つは、次のコマンドを使用して、ユーザーが接続するリモートホストに関する情報を保持する(〜/ .ssh / known_hostsに保存されている)known_hostsファイルをハッシュするようユーザーにアドバイスすることです。
ssh-keygen -H -f ~/.ssh/known_hosts
この方法では、保護されていない秘密キーに第三者がアクセスした場合でも、このキーが有効なリモートホストを見つけることは非常に困難です。もちろん、この手法を有効にするには、シェルの履歴をクリアする必要があります。
また、常に心に留めておくべきもう1つのことは、SSHサーバーの構成(sshd_config)に次の行を追加して、rootがリモートでログインできないようにすることです。
PermitRootLogin no
一方、ユーザーが認証にキーを使用するのを防ぎ、代わりにパスワードを使用したい場合は、以下をsshd_configに追加する必要があります。
PasswordAuthentication yes
PubkeyAuthentication no
1つの緩和策は、googleオーセンティケーターPAMモジュールプラグインを使用することです。通常、公式パッケージ内で入手できます。
これにより、スマートフォンの6桁のコードを通じて2FAが利用可能になります。
ここでの手順: Ubuntu 16.04でSSHの多要素認証を設定する方法