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



考虑您有一个工作站,将其连接到远程服务器,并在其中编辑一些文件,如

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的一部分,scp只会提示来自TTY的密码。

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

如果您不想每次都输入密码,则需要使用SSH密钥。为了减轻设置负担,您可以使用ssh-copy-id将密钥复制到远程系统一次,然后在没有密码提示的情况下正常使用Vim。

最新更新