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