欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

如何使用我的密钥文件通过 sftp 将数据从一台服务器传输到另一台服务器 有大用

33

我不能 scp,其他服务器只接受 sftp 连接。

目前,我正在尝试做

sftp jay@server.name.com:/files> put -r ~/

-i keyname不起作用,只是用 解决illegal option -- i

4 个回答

45

尝试:

sftp -o "IdentityFile=keyname" jay@server.name.com

您可以使用-o来传递 中有效的任何选项~/.ssh/config

8

使用传统方式将您的公钥复制到服务器。

在服务器上:

  • .ssh如果不存在则创建:

[[!-d "${HOME}/.ssh" ]] && mkdir -p "${HOME}/.ssh"
  • 实施公钥:

cat /path/to/public_key.pub >> "${HOME}/.ssh/authorized_keys"
  • 设置适当的权限。OpenSSH 对于相关文件的权限非常严格:

chmod go-rwx "${HOME}" "${HOME}/.ssh/authorized_keys"

之后,您应该能够使用 PRIVATE 密钥从客户端登录。要自动执行传输,您需要使用批处理文件,它只是一个包含要执行的命令列表的文本文件。

echo "put filename.foo /safe/path/filename.foo" >> /tmp/batchfile.txt
sftp -b /tmp/batchfile.txt -oIdentityFile=/path/to/private_key user@host

或者,您可以随意以 ssh_config 格式创建 ~/.ssh/config 文件,以便将来可以键入以下内容:

sftp -b /tmp/batchfile.txt 主机

样本内容~/.ssh/config

托管 the_hostname
    用户 user_name
    IdentityFile /path/to/private_key
0

如果您想在 ec2 上设置 sftp,本文可能会有所帮助

0

我最近遇到了这个问题,在我的 macbook 默认终端设置中对我有用的是以下内容

sftp -i ./privateFilePath.key username@url.com

请注意,您可能会因未受保护的私钥文件而获得晋升!消息,在这种情况下,您需要运行此命令以确保其他人无法访问您的私钥。

chmod 600 privateFilePath.key 

在某些情况下,您需要将sudo放在命令前面,只有当您在受管理员保护的目录中工作时才会这样做

我希望这有帮助:)

您必须登录才能回答此问题。

不是您要找的答案?浏览标记的其他问题


来自  https://superuser.com/questions/483593/how-do-i-use-my-keyfile-to-sftp-transfer-data-from-one-server-to-another


普通分类: