私はUbuntu 10.04 Linuxサーバーを持っており、通常はSSHアクセスにSSHキー認証(自宅のコンピュータで)を使用しています。ただし、パスワードが公開される可能性がある潜在的に保護されていないコンピュータ(インターネットカフェ、図書館のパブリックコンピュータなど)からリモートでSSHを接続する必要がある場合があります。この場合、次の使い捨てパスワードシステムを使用したいと思います。OTPWまたはスティーブギブソン完璧な紙のパスワード。
サーバーをどのように構成しますか?まずSSHキーを確認してからOTPWシステムを使用してください。認証のため? (2人のユーザーを作成する必要がありますか?)
ベストアンサー1
この方法は、1つの認証方法を確認しませんが、安全でない、または信頼できないコンピュータでOTPを使用してログインする問題を解決します。
複数のポート(公開鍵認証用の1つ、OTP認証用の1つ)をリッスンするようにSSHデーモンを構成するには、sshd_configファイルに別のポート番号を追加するだけです。
Port 22 # For key-based auth
Port 60000 # For OTP-based auth
2-FAはGoogleの2段階認証技術に基づいています。ライブラリーとプログラムをインストールするには、次のようにします。
$ sudo apt-get install libpam-google-authenticator
また、スマートフォンにGoogle Authenticatorアプリをインストールしてください。インストール後、端末からプログラムを起動します。
$ google-authenticator
これにより、バーコード、秘密、スクラッチコードが提供されます。それらを安全に守ってください!携帯電話にアクセスできない場合や緊急にアクセスする必要がある場合は、このコードが唯一の方法です。このバックアップメカニズムの重要性を過小評価しないでください。これは長期的な問題を引き起こす可能性があります。 Google Authenticatorを使用するようにPAMモジュールを設定します。
$ sudo nano /etc/pam.d/sshd
パスワードログインを無効にするには、@include common-auth行の前に#を追加してください。また、ファイルの下部に以下を追加します。
auth required pam_google_authenticator.so
OTP認証を有効にするには:
$ sudo nano /etc/ssh/sshd_config
フレーズを含む行を見つけて、「ChallengeResponseAuthentication
no」から「yes」に変更します。
設定PermitRootLogin no
してPasswordAuthentication no
。
ファイルの最後に「match」パラメータを使用して、そのポートからコンピュータにアクセスするために使用する必要がある認証メカニズムを決定します。例:
Match LocalPort 22
PasswordAuthentication no
AuthenticationMethods publickey
PubKeyAuthentication yes
Match LocalPort 60000
AuthenticationMethods keyboard-interactive:pam
「keyboard-interactive:pam」パラメータは、SSHデーモンがPAMモジュールデーモン(以下に設定されています)に移動し、そこに指定されているように認証するように強制します(したがって、行をハッシュしてPAMモジュールでパスワードログインを無効にする必要があります/etc/pam.d/sshd
)。common-auth
変更を適用するには、SSHデーモンを再起動することを忘れないでください。
$ sudo /etc/init.d/sshd restart
次に、信頼できないシステムでは、SSHを介してポート60000(または設定したポート)に接続し、OTPを使用して認証します。