调试为什么用户无法通过 ssh 执行一些可以在本地执行的操作

调试为什么用户无法通过 ssh 执行一些可以在本地执行的操作

这有点难以解释,所以我将根据我所看到的情况概述这个问题。

我有两台服务器,可以使用有效的密钥通过 ssh 登录。我无需提供密码即可登录。

用户同样可以通过 ssh 执行“ls -l”而不会出现问题,例如:

ssh [email protected] "ls -l"
ssh [email protected] "ls -l"

都有效。

但是使用 rsync 执行某些操作会在一台服务器上产生错误:

ssh [email protected] "rsync --version"  # works
ssh [email protected] "rsync --version"  # doesn't work: permission denied

但是,如果用户直接登录到服务器,则可以毫无问题地运行该命令。

[email protected]:~$ rsync --version  #returns version information

我不明白问题到底是什么,为什么允许用户在本地通过一台服务器上的 ssh 执行某些操作,但不能在另一台服务器上通过 ssh 执行某些操作(并且他们可以在本地执行)。

据我所知,一切都是相同的,但显然有些东西是不相同的。

编辑:输入:

ssh [email protected] 'which rsync --version'
ssh [email protected] 'which rsync --version'

产量相同/usr/bin/rsync

ssh [email protected] 'echo "$PATH"'
ssh [email protected] 'echo "$PATH"'

产量相同/usr/bin:/bin:/usr/sbin:/sbin

但是,登录每台机器的结果略有不同(但仍然相同):

`/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin`

所有 rsync 版本都具有相同的权限(除了时间戳之外,两个服务器上的权限都是相同的):

:~$ ls -l /bin/rsync /usr/bin/rsync
-rwsr-xr-x 1 root root 541760 May 10 07:48 /bin/rsync
-rwsr-xr-x 1 root root 541760 May 10 07:48 /usr/bin/rsync


21:39:20 user:~$ ssh [email protected] 'echo "$PATH"'
/usr/bin:/bin:/usr/sbin:/sbin
21:39:26 user:~$ ssh [email protected] "which rsync"
/usr/bin/rsync
21:39:37 user:~$ ssh [email protected] "rsync --version"
Permission denied, please try again.
21:39:47 user:~$ ssh [email protected] "/usr/bin/rsync --version"
rsync  version 3.0.9  protocol version 30...
...

我一直在到处寻找用户设置中的任何差异,但一无所获。据我所知,所有权限都是相同的。到目前为止,我发现的唯一问题是他们运行的版本略有不同sshd_config

致力于此:

#   $OpenBSD: sshd_config,v 1.94 2015/02/02 01:57:44 deraadt Exp $

但不是这个:

#   $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $

系统是相同的,但一个是较旧的硬件版本,并且都具有最新更新(我刚刚运行了更新以确认)。

问题的关键是我需要rsync从另一台服务器运行到这台服务器,并且 rsync 本身也被拒绝权限,而不仅仅是通过 ssh 的 rsync。例如:

user:~$ rsync -a randomfile 192.168.1.11:./
Permission denied, please try again.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(235) [sender=3.1.2]

然而,

user:~$ rsync -a randomfile 192.168.1.10:./

按预期工作。

我的想法是,这更多的是关于 SSH 权限,而不是路径本身,但它们显然与它有关......除了(正如我无数次说过的)路径和权限出现在各个服务器之间保持一致。

相关内容