Webmin通过SSH备份至使用Rush受限Shell的远程服务器失败求助
各位技术大佬好,我最近在折腾Webmin配置备份到远程服务器的事儿,碰上个棘手问题,折腾好久没头绪,来求助大家!
我想通过Webmin把配置文件安全备份到一台用Rush受限Shell的远程服务器,本人是Webmin和Rush新手,目前遇到了权限/配置类问题,不确定是Webmin、Rush还是sshd哪块出了问题。
环境与配置说明
- 备份存储服务器:10.20.0.130(Ubuntu 20.04),有一个
ftpsecure用户,默认shell为/usr/sbin/rush - 该服务器的
/etc/rush.rc配置如下:
acct on limits t10r20 umask 002 env - USER LOGNAME HOME PATH fall-through rule pwd command ^pwd set[0] /bin/pwd rule scp-to command ^scp (-v )?(-r )?-t( --)? /srv/vmceml_backups/? set[0] /usr/bin/scp chroot /srv/rush chdir /srv/vmceml_backups
手动测试正常,但Webmin备份失败
在我的Webmin服务器(10.20.0.129,Webmin 2.013 on Ubuntu 18.04)上,手动执行以下命令可以成功完成文件传输,全程不需要输入密码,证明密钥对配置是正常的:
sudo -u ftpsecure scp -v testfile ftpsecure@10.20.0.130:/srv/vmceml_backups/testfile
但在Webmin里配置备份后却失败:
- Webmin配置:在「Backup Configuration Files」→「Scheduled Backups」中设置的备份项:
- 备份目标:SSH服务器 10.20.0.130;服务器上的文件路径:
/srv/vmceml_backups/webmin-vmceml-backups-%Y%m%d.tgz;登录用户:ftpsecure;端口默认;备份内容包含Webmin模块配置文件、服务器配置文件。
- 备份目标:SSH服务器 10.20.0.130;服务器上的文件路径:
- 点击「Save and Backup Now」后报错:
Starting backup of 45 modules to /srv/vmceml_backups/webmin-vmceml-backups-20230307.tgz on 10.20.0.130 via SSH ..
scp failed : ftpsecure@10.20.0.130: Permission denied (publickey).
SSHD配置与日志情况
备份存储服务器的/etc/ssh/sshd_config配置如下:
HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_ed25519_key LogLevel DEBUG PermitRootLogin prohibit-password StrictModes yes AuthorizedKeysFile .ssh/authorized_keys HostbasedAuthentication no IgnoreRhosts yes PasswordAuthentication no PermitEmptyPasswords no PubkeyAuthentication yes TCPKeepAlive yes Match User ftpsecure PasswordAuthentication no ForceCommand internal-sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no Match all ChallengeResponseAuthentication no UsePAM yes X11Forwarding yes X11DisplayOffset 10 PrintMotd no PrintLastLog yes TCPKeepAlive yes AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server
备注:我尝试过移除Match User ftpsecure段,或者去掉其中的ForceCommand,结果都一样,问题依旧。PAM配置没改过默认的。
日志相关的奇怪现象:
- 手动执行scp时,Rush会正常记录
scp-to规则的日志,但Webmin发起备份时,Rush完全没有日志(连默认规则的日志都没有)。 - SSHD的日志片段:
KEX done [preauth]
userauth-request for user ftpsecure service ssh-connection method none [preauth]
attempt 0 failures 0 [preauth]
user ftpsecure matched 'User ftpsecure' at line 70
PAM: initializing for "ftpsecure"
PAM: setting PAM_RHOST to "10.20.0.129"
PAM: setting PAM_TTY to "ssh"
Connection closed by authenticating user ftpsecure 10.20.0.129 port 51584 [preauth]
do_cleanup [preauth]
我的疑惑
我不知道Webmin备份时具体执行的是哪条scp命令,没法确认我的手动测试是否和它的执行逻辑一致。
有没有大佬能帮忙分析下问题出在哪,或者给点排查方向?非常感谢!
备注:内容来源于stack exchange,提问作者Norman Henderson

