ローカルネットワークにプライベートサーバーが接続されており、最近いくつかのメディア転送用にSFTPサーバーを設定したかったです。ところが、接続しようとするとパスワードを聞いてみますが、パスワードが正しいのに「権限が拒否されました。もう一度お試しください」というエラーが出ます。
サーバー管理用のデフォルトのSSHアカウントがあり、公開鍵認証を使用すると正常に機能します。
通話の他のユーザーがsftp-default
グループにいますsftp
。sftp-default
パスワードを設定しました。# passwd sftp-default
私の/etc/ssh/sshd_configは次のようになります(コメントを省略)。
Include /etc/ssh/sshd_config.d/*.conf
Port 468
HostKey /etc/ssh/ssh_host_ecdsa_key
PubkeyAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,password publickey,keyboard-interactive
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
Match User sftp-default
PasswordAuthentication yes
AuthenticationMethods password,publickey
ChrootDirectory /mnt/raid/mediaServers/sftp
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
/mnt/raid/mediaServers/sftp には次の権限がありますstat
。
File: /mnt/raid/mediaServers/sftp
Size: 4096 Blocks: 8 IO Block: 4096 directory
Device: 821h/2081d Inode: 3014657 Links: 4
Access: (0755/drwxr-xr-x) Uid: ( 1004/sftp-default) Gid: ( 1004/ sftp)
Access: 2023-01-02 15:41:30.271437209 +0100
Modify: 2022-09-04 17:14:16.724283747 +0200
Change: 2023-01-02 15:41:30.287436770 +0100
Birth: 2022-09-04 16:12:38.458449835 +0200
sftp -P 468 sftp-default@<local_ip>
パスワードを3回入力しようとすると、次のような結果が表示されます。
sftp-default@<local_ip>'s password:
Permission denied, please try again.
sftp-default@<local_ip>'s password:
Permission denied, please try again.
sftp-default@<local_ip>'s password:
sftp-default@<local_ip>: Permission denied (password).
Connection closed.
Connection closed
注:<local_ip>
ローカルIPアドレス。
SSHを介した接続は同じ方法で拒否されます。実行ssh sftp-default@<local_ip> -p 468 -v
、出力:
OpenSSH_8.9p1 Ubuntu-3, OpenSSL 3.0.2 15 Mar 2022
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
debug1: /etc/ssh/ssh_config line 21: Applying options for *
debug1: Connecting to <local_ip> [<local_ip>] port 468.
debug1: Connection established.
debug1: Local version string SSH-2.0-OpenSSH_8.9p1 Ubuntu-3
debug1: Remote protocol version 2.0, remote software version OpenSSH_8.9p1 Ubuntu-3
debug1: compat_banner: match: OpenSSH_8.9p1 Ubuntu-3 pat OpenSSH* compat 0x04000000
debug1: Authenticating to <local_ip>:468 as 'sftp-default'
debug1: load_hostkeys: fopen /home/%user%/.ssh/known_hosts2: No such file or directory
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts: No such file or directory
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts2: No such file or directory
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: algorithm: curve25519-sha256
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: SSH2_MSG_KEX_ECDH_REPLY received
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:WK/sXtplQBRUA/guEF9HF6XiMZORiXdPVwweF5m467Q
debug1: load_hostkeys: fopen /home/%user%/.ssh/known_hosts2: No such file or directory
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts: No such file or directory
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts2: No such file or directory
debug1: Host '[<local_ip>]:468' is known and matches the ECDSA host key.
debug1: Found key in /home/theophil/.ssh/known_hosts:5
debug1: rekey out after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: rekey in after 134217728 blocks
debug1: get_agent_identities: bound agent to hostkey
debug1: get_agent_identities: ssh_fetch_identitylist: agent contains no identities
debug1: SSH2_MSG_EXT_INFO received
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,[email protected],ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected]>
debug1: kex_input_ext_info: [email protected]=<0>
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: password
debug1: Next authentication method: password
sftp-default@<local_ip>'s password:
[2 more authentication tries]
debug1: Authentications that can continue: password
debug1: No more authentication methods to try.
sftp-default@<local_ip>: Permission denied (password).
注:スパムフィルタのために一部の部品を取り出す必要がありました。ローカルIPアドレスをに<local_ip>
、サーバーに接続するユーザー名をに%user%
、いくつかのSHAチェックサムをに置き換えます[Checksum hidden]
。
私が逃したことは明らかですか?この問題の解決策を説明するオンラインがたくさん見つかりません。
これが何を意味するのかは分かりませんが、Subsystem sftp /usr/lib/openssh/sftp-server
コメントアウトしてSSHデーモンを再起動しても問題は解決しません。
UFWでポート468を開きました。 SFTPはデータ転送に別のポートを使用しますか?また、777(drwxrwxrwx)権限/mnt/raid/mediaServers/sftp
とroot
ユーザーをsftp-default
試してみました# chown sftp-default:sftp -R /mnt/raid/mediaServers/sftp
。# chmod 777 -R /mnt/raid/mediaServers/sftp
答え1
Google Authenticator PAMモジュールへの回答が見つかり、デフォルトのSSHアカウントに2FAを設定しました。どういうわけか設定されていないすべてのアカウントへのアクセスをブロックしましたsftp-default
。私にとっての解決策は、グループのGoogle Authenticator PAMモジュールを無効にすることでした。sftp
私は次の行でこれを行いました/etc/pam.d/sshd
。
#Disable SSH PAM authentication for SFTP-Users
auth [success=done default=ignore] pam_succeed_if.so user ingroup sftp
これですべてがうまくいき、私のアカウントを使ってログインできますsftp-default
。
sftp-default@<local_ip>'s password:
Connected to <local_ip>.
sftp> pwd
Remote working directory: /mnt/raid/mediaServers/sftp
sftp> bye