Vim 中的远程 sudo 编辑

dat*_*boy 5 sudo vim remote editing

如何使用 sudo 编辑远程文件?

我可以通过 ssh/scp 访问远程服务器,并在其上使用无密码 sudo。

我想以/etc/some/file远程 root 身份进行编辑,所以我运行:

  $ Vi scp://server/etc/some/file
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用,理由是我没有足够的权限。我怎样才能做到这一点?

小智 1

这是一小段bash脚本,可以完成您想要的操作:

#!/bin/bash -ex

TMP_FILE=$(basename "$2")

ssh -t "$1" "/bin/bash -c \"
mkdir -p /tmp/remote-sudoedit/
cd /tmp/remote-sudoedit/
/usr/bin/env SUDO_EDITOR=cat sudoedit '$2' | tee '$TMP_FILE'\""

nvim scp://"$1"//tmp/remote-sudoedit/"$TMP_FILE"

ssh -t "$1" "/bin/bash -c \"
cd /tmp/remote-sudoedit/
sudo cp '$TMP_FILE' '$2'
rm '$TMP_FILE'\""
Run Code Online (Sandbox Code Playgroud)