SSHデーモンに、「リモートデバイスがSSH経由で接続しようとしたときにauthenticate_keysを確認してください。キーが提供されていない場合は、ユーザーがssh-copy-idを使用して次の操作を実行できるようにワンタイムパスワードを受け入れてください」指示する方法はありますか?フォローアップのために「提供」しますか?
コンテキスト: ユーザーがサーバーにSSHで接続できるようにLinuxサーバーを設定したいのですが、認証にRSAキーペアを使用したいと思います。また、接続したいデバイスが複数あるため、これは複数のキーペアを提供することを意味します(問題ではありません)。
デフォルトでは、OTPとssh-copy-idを使用して現在アクセスが拒否されているデバイス(まだ公開鍵がないため)でAuthorized_keysにエントリを追加したいと思います。現在1台のコンピュータでSSH経由でログインする必要があります。できる接続してsshd_configファイルを編集してパスワードを許可し、静的パスワードにIDをコピーし、パスワード認証をオフにしてデーモンを再起動します。システムからOTPをインポートし、それを使用して作業を続ける方法を好みます。
答え1
公開鍵認証はデフォルトでオンになっており、パスワード認証よりも優先順位が高くなります(PAMまたは直接処理)。
sshd_config
UsePAM yes
認証をPAMに延期するオプション(Red Hatのデフォルト)でこれを設定できます。これは/etc/pam.d/sshd
構成されています(一部のシステムでは若干異なる場合があります)。
OTPの場合は、google_authenticator
使い捨てパスワードを使用するか、他のオープンな実装を使用できます。これを行う方法はいくつかあります。二重認証を検索できますが、基本的に次のような行を追加することです。
auth required pam_google_authenticator.so
そして、/etc/pam.d/sshd
いくつかの設定を行います。 Arch には、これに関する優れたガイドラインがあります。https://wiki.archlinux.org/index.php/Google_Authenticator
2番目の要素なしで使い捨てパスワードのみを使用することは、使い捨てパスワードまたはトークンを紛失した場合に潜在的に危険です。この方法を使用するのではなく、1段階認証を使用する代わりに2段階認証を実装することをお勧めします。時間パスワードパスワード。