我想设置一个通过 SSH 连接的 RSync 作业。
我有我的电脑( backup@myhost )和远程主机( test@remhost ),我需要备份文件夹 ~/something 及其所有内容。ssh 用户 test 仅对 ~/ 文件夹中的所有文件和文件夹具有 READ 访问权限。我想使用 rsync 将 test@remhost:~/something 文件夹复制到 backup@myhost:~/bak 文件夹。
为此,我在 Ubuntu 11.10 (Oneiric) 上通过 BASH 使用以下命令:
rsync -avz -e ssh test@remhost:~/something/ ~/bak/
Run Code Online (Sandbox Code Playgroud)
按回车后我得到这个:
test@remhost's password:
Run Code Online (Sandbox Code Playgroud)
我输入密码并且 rsync 工作。
我想让上面的命令自动输入密码并将其作为参数传递或自动输入并启动作业。
我尝试执行,rsync -avz -e ssh test:password@remhost:~/something/ ~/bak/但它仍然要求输入密码,这很烦人。
我不想听到任何类型的密钥(RSA、DSA 或任何其他)。我只想要一个简单的命令来让我登录并完成工作。
编辑:可能的情况是,如果公钥身份验证被禁用并且您无法更改它。例如,如果您使用 OpenSSH,您需要在服务器上拥有 root 权限才能编辑文件sshd_config并添加PubkeyAuthentication yes.
编辑:这最终对我有用:
sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Run Code Online (Sandbox Code Playgroud)
请注意,这种方法并不安全,因为它以纯文本形式发送密码,并且容易受到中间人攻击。建议使用密钥认证以提高安全性。
小智 32
也许尝试 sshpass。
使用起来似乎很简单……它也可以通过 apt 获得。
在我复制我的钥匙之前,我一直在寻找这样的东西,但是因为无论如何我已经把钥匙放在了我需要的任何地方,所以我没有花时间尝试这个。
请注意该教程中关于密码可见性的免责声明。
对于所有需要这样做的人:
sshpass -p 'sshpassword' rsync --progress -avz -e ssh test@remhost:~/something/ ~/bak/
Run Code Online (Sandbox Code Playgroud)
小智 8
对安全威胁更安全的解决方案的一个变体是将您的密码存储在具有严格权限的文件中,并使用-f带有shpass以下标志的标志:
sshpass -f '/home/me/.password' rsync --progress -avz -e ssh
test@remhost:~/something/ ~/bak/
Run Code Online (Sandbox Code Playgroud)
不同之处在于列出正在运行的进程不会在命令行中显示您的密码,它现在只会显示您的密码所在文件的路径。