我如何通过 sshfs sudo?

dir*_*ide 41 ssh sudo sshfs

在我的本地主机上,alpha我有一个foo通过 sshfs 映射到主机的目录,bravo如下所示:

$ sshfs charlie@bravo:/home/charlie ~/foo
Run Code Online (Sandbox Code Playgroud)

但是,在主机上bravo还有另一个用户 delta,我想sudo /bin/su成为它,以便我可以在bravo:/home/delta. delta可能无法通过 ssh 登录;由于我无法改变的原因,一旦你在机器上,你只能 sudo 到 delta。

通常我会 ssh 进入bravo,然后 sudo 到 delta,但我想知道当我通过 ssh 安装了查理的主目录时,是否有任何方法可以做到这一点。

小智 43

这将根据您连接到的服务器的操作系统而有所不同。对于 centOS 5,您将添加到 sshfs 挂载选项:

-o sftp_server="/usr/bin/sudo /usr/libexec/openssh/sftp-server"

对于 Ubuntu 9.10(我认为,可能是 9.04,但两者可能相同)或 Debian,您将添加:

-o sftp_server="/usr/bin/sudo /usr/lib/openssh/sftp-server".

要为运行 openSSH 的其他系统找到正确的路径,请运行

sudo grep Subsystem /etc/ssh/sshd_config

并查找 sftp-server 二进制文件的位置。

您可能需要使用 NOPASS:{path to sftp-server} 设置 sudo 或预先验证,ssh user@host sudo -v以便sudo更新notty. 就我而言,我的两个命令是:

ssh login_user@host sudo -v
sshfs login_user@host:remote_path local_path -o sftp_server="/usr/bin/sudo -u as_user /usr/lib/ssh/sftp-server"
Run Code Online (Sandbox Code Playgroud)

  • `ssh 主机 sudo -v` 不会让我的 sudo 高兴 - 在它让我 sudo 之前它需要一个 tty。想法? (2认同)
  • @eggo @Sebi @calandoa @xaralis 如果我想在 debian 9 中以 root 身份执行 sudo,这个命令也可以工作吗?因为如果我使用: `ssh -t myuser@host sudo -v sshfs myuser@host:remote_path local_path -o sftp_server="/usr/bin/sudo -u root /usr/lib/openssh/sftp-server"` 它不会不起作用:\ - 它只是说“远程主机已断开连接” (2认同)

小智 6

您可以使用bindfs + sshfs来访问其他用户文件(甚至是root)。

首先,使用重新映射的 uid 挂载“root”或用户下的任何其他目录。

ssh -t USER@SERVER "mkdir ~/tmproot; sudo bindfs --map=root/USER / ~/tmproot"

然后只需 sshfs 进入目录即可。

sshfs USER@SERVER:tmproot TARGET

但为了安全起见,最好不要映射整个根/,而只映射您需要的部分。例如:您可以使用此方法将任何其他用户目录挂载到您的目录,例如将文件从 /var/www 挂载到 ~/www 并将 root 重新映射到您的用户,以便您可以完全访问它。

如果您需要访问权限来保留 uid 或有权访问多个用户,那么我将创建一个新用户,例如 uid=0 和 /bin/false 的“rootfs”,并执行正常的 sshfs。


Sla*_*ast 0

你可以尝试(但我认为它不会起作用):

sshfs -o ssh_command='ssh sudo /bin/su bravo' charlie@bravo:/home/charlie ~/foo
Run Code Online (Sandbox Code Playgroud)

我不太了解 sshfs,所以你也许可以让类似的东西工作,但我不能说如何,我会有点惊讶。

另一种可能性是将命令“sudo /bin/su bravo”放入 ~/.ssh/rc 中,但这会影响您所有的 fs 安装(假设它有效,我也对此表示怀疑)以及您对 ssh 的正常使用。

抱歉,黛比心情不好。