这有点难以解释,所以我将根据我所看到的情况概述这个问题。
我有两台服务器,可以使用有效的密钥通过 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 权限,而不是路径本身,但它们显然与它有关......除了(正如我无数次说过的)路径和权限出现在各个服务器之间保持一致。