如何让Vim/Neovim编辑远程多文件时保留SSH会话免重复输密码?
解决Vim/Neovim编辑远程文件重复输入密码的问题
当然有办法搞定这个重复输密码的麻烦!最实用的方案就是利用SSH的**控制套接字(ControlMaster)**功能,它能让多个SSH会话复用同一个底层连接,这样你第一次输入密码后,后续用Vim/Neovim操作远程文件时就再也不用重复输入了。下面是具体的实现步骤:
1. 配置SSH客户端复用连接
首先编辑你的本地SSH配置文件~/.ssh/config(如果文件不存在就直接创建),添加针对目标服务器的专属配置:
Host 192.0.0.100 User sarah ControlMaster auto ControlPath ~/.ssh/sockets/%r@%h:%p.sock ControlPersist 1h
参数说明:
ControlMaster auto:自动创建一个"主"SSH连接,后续所有指向该服务器的SSH请求都会复用这个连接ControlPath:指定存储控制套接字的文件路径,%r(用户名)、%h(主机IP)、%p(端口)保证了路径的唯一性。注意要先提前创建对应的目录:mkdir -p ~/.ssh/socketsControlPersist 1h:设置主连接在最后一个会话结束后,仍保持1小时的活跃状态,这段时间内你再用Vim打开远程文件都不需要重新输入密码
2. 验证配置效果
第一次用Vim打开远程文件时,还是需要输入一次密码:
workstation $ vim scp://192.0.0.100//home/sarah/recipes/
输入密码后,后续不管是再次用Vim打开该服务器的其他文件,还是直接SSH登录服务器,都不会再要求输入密码了——因为所有操作都复用了之前建立好的连接。
3. 可选:Vim/Neovim快捷操作优化
如果你经常需要访问这个远程目录,可以在Vim/Neovim的配置文件(~/.vimrc或~/.config/nvim/init.vim)里添加一个快捷键映射,比如:
nnoremap <leader>rr :e scp://192.0.0.100//home/sarah/recipes/<CR>
之后在Normal模式下按<leader>rr(默认<leader>是反斜杠\)就能快速打开远程目录,不用每次输入长长的路径。
额外补充:彻底免密码登录(可选)
如果你想连第一次的密码都不用输,可以配置SSH密钥认证:
- 本地生成SSH密钥(如果还没有):
ssh-keygen -t ed25519 - 将公钥复制到远程服务器:
ssh-copy-id sarah@192.0.0.100
之后不管是SSH登录还是用Vim打开远程文件,都完全不用输入密码了,结合ControlMaster的话体验会更丝滑。
内容的提问来源于stack exchange,提问作者Culip
相关产品推荐
相关产品推荐

