Debian SSH权限问题解决方法
SSH对配置文件的权限有严格要求,权限过宽会导致服务拒绝认证。需确保以下文件权限正确:
/etc/ssh/ssh_host_*_key):权限设为600(仅所有者可读写);/etc/ssh/ssh_host_*_key.pub):权限设为644(所有者可读写,其他用户只读);/etc/ssh/sshd_config):权限设为600(防止未经授权的修改)。cd /etc/ssh/
sudo chmod 600 ssh_host_* # 私钥文件
sudo chmod 644 *.pub # 公钥文件
sudo chmod 600 sshd_config # 配置文件
修改后重启SSH服务使变更生效:
sudo systemctl restart ssh
SSH要求用户家目录权限不能过宽(如777),否则会拒绝认证。需将家目录权限设为755(所有者可读、写、执行,其他用户可读、执行):
sudo chmod 755 /home/username # 替换为实际用户名
若用户目录下有.ssh子目录,需进一步限制其权限为700(仅所有者可访问):
sudo chmod 700 /home/username/.ssh
authorized_keys文件存储了客户端的公钥,是密钥认证的核心。若该文件权限不正确(如644或777),SSH会拒绝密钥认证。需将其权限设为600(仅所有者可读写):
sudo chmod 600 /home/username/.ssh/authorized_keys # 替换为实际用户名
同时确保.ssh目录权限为700(见上文)。
SSH配置文件(/etc/ssh/sshd_config)中的AllowUsers、DenyUsers、AllowGroups等参数会限制可登录的用户或组。若目标用户未被允许,需修改配置:
AllowUsers username(替换为实际用户名);AllowGroups sshusers(需提前创建组并将用户加入);DenyUsers username。sudo systemctl restart ssh
注:若配置了DenyUsers或AllowUsers,需确保目标用户在允许列表中。
若使用chroot jail限制用户访问(如SFTP用户),需确保chroot目录权限正确:
/home/sftpuser):所有者必须为root,权限设为755(防止用户逃逸chroot);/home/sftpuser/uploads):所有者为用户自身,权限设为755或775(允许用户上传文件)。sudo chown root:root /home/sftpuser # chroot目录所有者为root
sudo chmod 755 /home/sftpuser # chroot目录权限
sudo mkdir -p /home/sftpuser/uploads # 创建用户工作目录
sudo chown sftpuser:sftpuser /home/sftpuser/uploads # 工作目录所有者为用户
修改sshd_config启用chroot(添加以下内容到/etc/ssh/sshd_config):
Match User sftpuser # 替换为目标用户
ChrootDirectory /home/sftpuser
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
重启SSH服务:
sudo systemctl restart ssh
若SSH配置禁用了密码或密钥认证,会导致登录失败。需检查/etc/ssh/sshd_config中的以下参数:
PasswordAuthentication yes;PubkeyAuthentication yes。sudo systemctl restart ssh
若以上方法无法解决,可通过查看SSH日志定位具体错误:
sudo tail -f /var/log/auth.log # Debian/Ubuntu系统
日志中会提示具体的拒绝原因(如“Permission denied”、“Invalid permissions”),根据提示针对性修复。