通过 ssh 进行的 Webmin 备份无法与远程 Rush Shell 配合使用

通过 ssh 进行的 Webmin 备份无法与远程 Rush Shell 配合使用

我想安全地将 Webmin 的配置备份(最初是配置备份)备份到远程服务器。我是 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 服务器 10.20.0.129(Ubuntu 18.04 上的 Webmin 2.013),我可以成功运行:

sudo -u ftpsecure scp -v testfile [email protected]:/srv/vmceml_backups/testfile

不需要密码,这证明公钥/私钥设置正确且有效,scp 的详细日志也证实了这一点。

在 Webmin、备份配置文件、计划备份下我有一个条目:备份目标:SSH 服务器 10.20.0.130;服务器上的文件:/srv/vmceml_backups/webmin-vmceml-backups-%Y%m%d.tgz;以用户 ftpsecure 身份登录;服务器端口默认;包括:Webmin 模块配置文件、服务器配置文件。

当我单击“立即保存并备份”时,我得到:通过 SSH 开始将 45 个模块备份到 10.20.0.130 上的 /srv/vmceml_backups/webmin-vmceml-backups-20230307.tgz。scp 失败:[电子邮件保护]:权限被拒绝(公钥)。

在 /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 的存在/不存在,或者整个 Match User ftpsecure 部分的存在/不存在,都没有区别。

我没有改变 PAM 的标准配置文件。

当我运行 Webmin 备份时,备份存储服务器上的受限 shell rush 不会记录任何内容,即使是默认规则也不会。当我在 webmin 服务器上手动运行 scp 时,备份存储服务器上的 rush 会根据 scp-to 规则按预期进行记录(并且 scp 成功,如上所述)。

我不明白 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 命令。

欢迎提出任何建议!

答案1

当我转向基于密钥的身份验证时,我也看到了这个问题。我注意到一个虚拟用户建议可以通过手动运行备份命令并在 scp 命令的用户名后添加冒号来解决这个问题,但是我可以找到一个 perl 文件来手动编辑以使自动备份正常工作。

相关内容