ユーザーがパスワードや公開鍵なしでSSHを実行できるようにSSHDをどのように設定しますか?

ユーザーがパスワードや公開鍵なしでSSHを実行できるようにSSHDをどのように設定しますか?

ユーザーを公に許可したいです。つまり、ユーザーがパスワードを入力したり公開鍵を設定したりせずにログインできるようにしたいのです。これはオープンなSSHアプリケーションを作成するためのものです。簡単なはずですがうまくいかないようです。ここに私のsshd_configがあります。

UsePAM no
Match User app
        X11Forwarding no
        AllowTcpForwarding no
        # PermitTTY no
        PermitEmptyPasswords yes
        AuthenticationMethods none
        ForceCommand myapp

クライアントで ssh を試みると、パスワードの入力を求められます。

[email protected]'s password:
Permission denied, please try again.

いくつかのバリエーションを試しましたが、運がありません。

ありがとうございます。

ベストアンサー1

予備説明

  1. 管理者権限シェル(sudo -i)を起動して開いたままにします。問題が発生した場合は、管理者権限シェルを使用して変更を元に戻してください。
  2. sudo cp -a …変更したいファイルのコピーを作成します()。
  3. 最後に、もう一度ログインしてsudo再認証できることを確認してください。次に、持ち上げられたハウジングを閉じます。

ソリューション - パート1:/etc/ssh/sshd.conf

自分で管理されたパスワード認証sshdではなく、PAMと対応するキーボード対話型認証を使用するように設定します。sshd最も簡単な方法は、すべてのユーザーに対して無条件にこれを行うことです。存在する/etc/ssh/sshd.conf

UsePAM yes
PasswordAuthentication no
KbdInteractiveAuthentication yes
#...

メモ:

  • 各パラメータで最初に取得した値を使用します。

  • ChallengeResponseAuthenticationKbdInteractiveAuthenticationはい、エイリアスは使用されなくなったため、ファイルに古い名前がないことを確認してください。ChallengeResponseAuthentication no

  • PasswordAuthenticationユーザーのためのキーボード対話型認証と他のユーザーのための一般的なパスワード認証を実行できるように、後ろに配置できますが、KbdInteractiveAuthenticationグローバルです。スニペットは次のとおりです。Match User …appUsePAM

    UsePAM yes
    Match User app
          PasswordAuthentication no
          KbdInteractiveAuthentication yes
    Match All
    PasswordAuthentication yes
    KbdInteractiveAuthentication no
    

sshdファイルを修正して再起動または再ロードします(例:Debian sudo systemctl reload ssh.service:)。


ソリューション - パート2:/etc/pam.d/common-authまたは/etc/pam.d/sshd

2つの方法:

  • 常に自動的にユーザーを認証するように変更してappください/etc/pam.d/commmon-auth
  • 関連付けられているときにユーザーを自動的に認証したい場合は、変更しますが、app変更しないでください。sshd/etc/pam.d/sshd/etc/pam.d/commmon-auth

実際には、または/etc/pam.d/commmon-authを修正する必要があります/etc/pam.d/sshd。それらを修正することはあまりにも多くです。


ソリューション - パート2a:/etc/pam.d/common-auth

常に自動的にユーザーを認証するようにPAMを設定するには、inを含む(すでに存在する)行の前に次のものを含む行を追加しますapp。ファイルは次のようにする必要があります。pam_succeed_if.sopam_unix.so/etc/pam.d/common-auth

# [...]
auth [success=2 default=ignore] pam_succeed_if.so user = app
auth [success=1 default=ignore] pam_unix.so nullok
# [...]
auth requisite pam_deny.so
# [...]
auth required pam_permit.so
# [...]

修正された方法です。この他の答え、そこに説明があります。pam_succeed_ifユーザーがapp認証のために処理(パスワードを求めるメッセージ)を実行する必要がないように、これを最初に入れましたpam_unix

appsu appたとえば、認証を要求するすべてのツールに対して自動的にユーザーを認証します。要求app時にのみsshdユーザーを自動的に認証するには、以下を変更する必要があります/etc/pam.d/sshd


ソリューション - パート2b:/etc/pam.d/sshd

関連するユーザーを自動的に認証するように PAM を設定するには、app(既に存在する) 前に 2 行を追加します.ファイルの先頭は次のようになります。sshd@include common-auth/etc/pam.d/sshd

# [...]

auth [success=1 default=ignore] pam_succeed_if.so user != app
auth sufficient pam_permit.so

# Standard Un*x authentication.
@include common-auth

# [...]
[...]

おすすめ記事