クライアント側でSSHパスワード確認を無効にできますか?

クライアント側でSSHパスワード確認を無効にできますか?

SSHサーバーに接続していますが、SSHD構成を完全に制御することはできません。サーバーは公開鍵認証とパスワード認証を許可しますが、SSHをブロックしたいと思います。顧客公開鍵認証に失敗してもパスワード認証に切り替えられません。

PasswordAuthentication noサーバーエントリに追加しようとしましたが、~/.ssh/config目立つ効果はありませんでした。

可能ですか?

私はこれが追加のセキュリティを提供しないことを理解しています。一部のアプリがパスワードを待っている間に停止するのを防ぐために、ユーザーエクスペリエンス目的でこれを行います。

答え1

sshバッチモードの場合、次のメッセージは表示されません。

ssh -oBatchMode=yes you@theotherhost command

設定できます

alias ssh /usr/bin/ssh -oBatchMode=yes

あなたの場合、.bashrc対話型セッションのクライアントパスワード認証は無効になります。 (あなたがしない限り/us/bin/ssh

より詳細な解決策は次のとおりです。

  • /usr/local/bin前に確認PATHしてください/usr/bin
  • ファイルの作成/usr/local/bin/ssh:
#!/bin/bash
/usr/bin/ssh $*
  • chmod a+rx /usr/local/bin/ssh

しかし、これらのどれも完璧ではありません。

答え2

クライアントコマンドまたは~/.ssh/config:

ここで解決策のいくつかの可能性を見つけることができます。

現在のSSH接続試行のパスワード認証を無効にします。

現在のSSH接続試行のパスワード認証を無効にするには、コマンドラインからこのオプションを渡します。 -o PasswordAuthentication=no

すべてのホストへの今後のすべての接続に対してパスワード認証を無効にするには、 ~/.ssh/config に次を追加します. PasswordAuthentication no

コマンドライン(または〜/ .ssh / config)でPreferredAuthenticationsを設定できます。 PreferredAuthentications=publickey

SSHクライアントのパスワードプロンプトを無効にする方法は?

これを行う標準的な方法は、BatchModeオプションを使用することです。

ssh -o BatchMode=yes …

リモート/サーバー側/etc/ssh/sshd_config

パスワードを使用したくない場合は、/etc/ssh/sshd_configリモートコンピュータで変更できます。PasswordAuthentication no

sshd_configリモートシステムのいくつかの一般的な設定:

PermitRootLogin no          # No root login
PasswordAuthentication no   # No password login
PermitEmptyPasswords no     # No empty password
PubkeyAuthentication yes    # login with public key

編集後にサービスを再起動してください

関連情報