保存VIM上的文件时,自动rsync不起作用,因为rsync会提示输入密码

时间:2013-04-22 06:10:30

标签: linux ubuntu vim rsync

我正在配置VIM以在保存文件后执行rsync,将我的服务器与我的开发笔记本电脑同步。它不起作用,因为即使我已经设置了公钥登录,rsync也会提示输入我的密码。如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

如果您使用的是ssh - 与rsync的连接,则可以随时为其设置无密码连接。 [Here][1]some个很好的教程。它也可以通过PuTTY,PLink,Pageant等在Windows上完成。阅读文档。

答案 1 :(得分:2)

不是使用vim,而是使用incron怎么样?它附带了大多数现代Linux发行版,并将同步任何更改,而不仅仅是您在vim中执行的更改。

答案 2 :(得分:1)

明确定义与ssh-key使用的ssh -i

  • :nnoremap <expr> <D-s> ':w!<cr>' . ':!rsync -r -e ssh -i /home/user/.ssh/id_rsa ~/Folder/* user@my_ssh_server.com:~/Folder/ &<cr>' . ':!osascript ~/applescripts/chromereload.scpt &<cr>'

或者您可以尝试将shell变量设置为交互式,即使用~/.bashrc ++(man bash)。不确定它是否有任何影响。

  • :set shell=/bin/bash\ -i

和/或如果需要,在~/.bashrc中定义别名。也许将它与chromereload.scpt的任何内容结合起来。

  • alias vimsync='rsync -r -e ssh -i /home/user/.ssh/id_rsa ~/Folder/* user@my_ssh_server.com:~/Folder/'

更多信息:
vim -- not recognizing aliases when in interactive mode?

答案 3 :(得分:0)

我没有尝试过,但它应该有效:

将它放入〜/ .ssh / config文件中: ControlMaster自动 ControlPath~/.ssh/cm_socket/%r@%n:%p ControlPersist 300 KeepAlive是的 ServerAliveInterval 60

从另一个终端创建目录〜/ .ssh / cm_socket和ssh到服务器。现在,当你再次ssh到服务器时,它应该使用相同的套接字,不需要密码,所以你的rsync命令应该没有密码。