로컬 네트워크에 개인 서버가 연결되어 있고 최근 일부 미디어 전송을 위해 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