unix - 如何将identity文件与rsync一起使用?

  显示原文与译文双语对照的内容

如何将identity文件与rsync一起使用?

我使用rsync为使用标识文件来connect,这是语法认为我应该 using:

rsync -avz -e 'ssh -p1234 -i ~/.ssh/1234-identity' 
"/local/dir/" remoteUser@22.33.44.55:"/remote/dir/"

但这给了我一个错误:

Warning: Identity file ~/.ssh/1234-identity not accessible: No such file or directory.

文件很好,权限被正确设置了,在做ssh时它工作不正常- 至少在我的语法中。 我做错什么了? 是否试图在远程计算机上查找标识文件? 如果是,我该如何指定我想在本地计算机上使用标识文件?

时间: 原作者:

你可能想使用 ssh-agentssh-add 将密钥加载到内存中。 ssh 会自动尝试来自ssh-agent的标识,如果它能找到的话。 命令将是


eval $(ssh-agent) # Create agent and environment variables
ssh-add ~/.ssh/1234-identity

ssh-agent 是一个用户守护进程,它在内存中保存未加密的ssh密钥。 ssh基于 环境变量 在运行时输出 ssh-agent 。 使用 eval 评估这里输出将创建 环境变量 。 ssh-add 是管理密钥内存的命令。 可以使用ssh-add锁定代理程序。 可以在启动ssh-agent时指定一个密钥的默认生存期,也可以在添加项时指定密钥。

你可能还想设置一个 ~/.ssh/config 文件来提供端口和密钥定义。 ( 有关更多选项,请参见 `man ssh_config 。)


host 22.33.44.55
 IdentityFile ~/.ssh/1234-identity
 Port 1234

使用ssh命令可以防止 ~ 或者 $HOME 所需的外壳扩展。 你可以在单引号中使用完整或者相对的路径。

使用 $HOME


 rsync -avz -e"ssh -p1234 -i $HOME/.ssh/1234-identity".. .

或者到密钥的完整路径:


 rsync -avz -e"ssh -p1234 -i/home/username/.ssh/1234-identity".. .

在Ubuntu上测试了 rsync 3.0.9

原作者:
...