我正在尝试从我的 MacOS 计算机 rsync 到在 Windows Azure 上运行的 Ubuntu 服务器。要 ssh 到它,我必须执行以下操作:
$ ssh -i myPrivateKey.key -p 22 [email protected]
我认为密钥文件可能是 X509 公钥,如果这有帮助的话(抱歉,我不是系统管理员)。无论如何,我可以使用上述命令成功 ssh。
现在我想将文件 rsync 到远程服务器。我是否需要以.key
某种方式提供文件作为选项?
正常的 rsync 命令失败:
$ sudo rsync -avz -e my/file [email protected]:/my/path
rsync: Failed to exec my/file: Permission denied (13)
rsync error: error in IPC code (code 14) at /SourceCache/rsync/rsync-42/rsync/pipe.c(86) [receiver=2.6.9]
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at /SourceCache/rsync/rsync-42/rsync/io.c(452) [receiver=2.6.9]
答案1
命令失败不是因为键错误,而是因为你告诉 rsync 运行my/file
而不是ssh
(通过使用-e
选项,它会拾取其后的单词)。请先删除该-e
选项。
由于rsync
通常用于ssh
连接,您可以配置两个都始终使用特定密钥连接到 cloudapp。例如,将其放在文件顶部~/.ssh/config
:
Host me.cloudapp.net
Username me
IdentityFile ~/my-cloudapp-key.key
IdentitiesOnly yes
此Username me
部分还允许您me@
在使用 ssh 或 rsync 时跳过添加操作。Plainrsync -avz my/file me.cloudapp.net:/my/path
即可。
注意:SSH 密钥不是 X.509 证书;它们只是普通的 RSA 或 ECDSA 密钥对,没有任何其他信息。