SSHには公開鍵と秘密鍵が必要ですが、SFTPパスワードログインのみを許可するようにLinuxサーバーを設定するにはどうすればよいですか?

SSHには公開鍵と秘密鍵が必要ですが、SFTPパスワードログインのみを許可するようにLinuxサーバーを設定するにはどうすればよいですか?

私のアカウントの公開秘密鍵を使用してログインするように設定したLinuxサーバーがありますが、これはうまく機能します。設定してから古くなったので、何が起こったのか覚えていませんが、パスワードログインを許可しないように設定されています。正しいキー(sshまたはsftpを使用)なしでシステムにログインしようとすると、次のエラーが発生します(予想どおり)。Permission denied (publickey,password)

これで、WebサーバーのディレクトリにあるすべてのWebページを編集できる必要がある新しいユーザーをシステムに追加する必要があります。アクセスする必要があるディレクトリが既に存在します。このユーザーはSFTPを介してのみアクセスできる必要があり、他のすべてのログインは無効になります。また、このユーザーが公開鍵ではなくパスワードを使用してログインできることを願っています。次のようにユーザーを設定しました。

sudo useradd -g sftpusers -d /home/ethereal/lemp-compose/public/promopages -s /sbin/nologin promoadmin

次に、次のように新しいユーザーが作成されたことを確認します。

grep promoadmin /etc/passwd

次のようにアクセスする必要がある既存のディレクトリの所有者を変更しました。

sudo chown -R promoadmin:sftpusers /home/ethereal/lemp-compose/public/promopages

そしてアカウントのパスワードを設定してください。

sudo passwd promoadmin

今編集したので/etc/ssh/sshd_config状況が変になりました。現在のシステムの動作方法を考えると、予想される(何よりも)以下を確認してください。 (私が言ったように、何年も前にこのサーバーをセットアップするためにどのステップを踏んだのか覚えていません。)

PermitRootLogin no 
RSAAuthentication yes
PubkeyAuthentication yes

PasswordAuthentication no

私は何ですか?実際に私が見るもの

PermitRootLogin no 
RSAAuthentication yes
PubkeyAuthentication yes

PasswordAuthentication yes 

それから続けてください。

Subsystem sftp /usr/lib/openssh/sftp-server

UsePAM yes

AllowUsers etherealadmin promoadmin
AllowGroups sftpusers

KexAlgorithms [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

Match Group sftpusers
  PasswordAuthentication yes

完了したら、SSHを再起動しました。

sudo service ssh restart

私の設定では、パスワードまたは公開/秘密鍵(sshとsftpを使用)を使用してログインできると予想しましたが、明らかにそうではありません。また、promoadminユーザーがsftpを使用してログインできることを願っています。しかし、これはうまくいきません。 etherealadminユーザーはsshとsftpに公開秘密鍵のみを使用するため、promoadminをまったく機能させることはできません。

私は明らかにこれを台無しにしました。問題を特定し、この混乱をきれいにするのに役立つ人に非常に感謝します!


パート2、これまで提案してくれた皆さんに感謝します。

-vオプションを使用してログインしようとすると、次の結果が表示されます(IPアドレスは関連性がなく、難読化されます)。

debug1: Trying private key: /Users/headbanger/.ssh/id_dsa
debug1: Trying private key: /Users/headbanger/.ssh/id_ecdsa
debug1: Trying private key: /Users/headbanger/.ssh/id_ed25519
debug1: Trying private key: /Users/headbanger/.ssh/id_xmss
debug1: Next authentication method: password
[email protected]'s password:
debug1: Authentication succeeded (password).
Authenticated to xxx.xxx.xxx.xxx ([xxx.xxx.xxx.xxx]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug1: Sending environment.
debug1: Sending env LANG = en_GB.UTF-8
debug1: Sending env LC_TERMINAL_VERSION = 3.3.9
debug1: Sending env LC_TERMINAL = iTerm2
debug1: Sending subsystem: sftp
Received message too long 1416128883
Ensure the remote shell produces no output for non-interactive sessions.
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
Transferred: sent 2412, received 2712 bytes, in 0.8 seconds
Bytes per second: sent 3002.2, received 3375.6
debug1: Exit status 1

これは、/usr/sbin/nologinシェルが元々誤って指定された問題を解決した後に発生します。だから我々は解決策に近づくことができます。 /usr/sbin/nologinが問題の一部である場合に備えて、/etc/shellsに含まれていないことも注目に値します。

すべてのアイデアを歓迎します!

関連情報