使 Vim 在远程编辑多个文件时保留密码

Make Vim keep the password while editing multiple files remotely

假设您有一个工作站,将其连接到远程服务器并编辑其中的一些文件,例如

workstation $ ssh sarah@192.0.0.100     # Log into the remote server
Password: MyPassw0rd!
server $ ls  /home/sarah/recipes/       # Files you want to edit
applePie.txt    bananaCake.txt
server $ vi  /home/sarah/recipes/       # Open this directory and edit the files in it
...
:x
server $ logout                         # Log out and come back to the workstation

现在您想在自己的工作站上使用 Vim/Neovim。

workstation $ vim scp://sarah@192.0.0.100://home/sarah/recipes/
sarah@192.0.0.100's password: MyPassw0rd!

问题是每次打开此服务器中的文件时都必须再次输入相同的密码。当 Vim/Neovim 正在同一远程服务器中编辑文件时,有什么方法可以使此 SSH 会话保持活动状态?

Netrw 是处理加载和保存远程文件的工具,仅提示输入 FTP 帐户的密码。您看到的提示实际上来自 scp,作为 OpenSSH 的一部分,它只会提示输入来自 TTY 的密码。

因为您是直接将密码输入到 scp 中,并且所调用的 scp 进程只是短暂存在,所以无法缓存您的密码。即使 Netrw 确实提示您输入密码,scp 也没有提供非交互式读取密码的方法,因此 Netrw 无法缓存它并传递它。

如果您不想每次都输入密码,则需要使用 SSH 密钥。为了减轻设置负担,您可以使用 ssh-copy-id 将密钥复制到远程系统一次,然后像往常一样使用 Vim 而无需密码提示。