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

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

我无法 scp,其他服务器只接受 sftp 连接。

目前,我正在尝试做

sftp [email protected]:/files> put -r ~/

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

答案1

尝试:

sftp -o "IdentityFile=keyname" [email protected]

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

答案2

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

在服务器上:

  • .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"

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

echo "put filename.foo /safe/path/filename.foo" >> /tmp/batchfile.txt
sftp -b /tmp/batchfile.txt -oIdentityFile=/path/to/private_key 用户@主机

或者,您可以随意创建一个 ssh_config 格式的 ~/.ssh/config 文件,以便以后只需输入以下内容:

sftp -b /tmp/batchfile.txt 主机

样本内容~/.ssh/config

主机 the_hostname
    用户 user_name
    IdentityFile /path/to/private_key

答案3

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

sftp -i ./privateFilePath.key [email protected]

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

chmod 600 privateFilePath.key 

在某些情况下你需要须藤在命令前面,这仅当您在管理员保护的目录中工作时才有效

希望这对你有帮助 :)

答案4

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

相关内容