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

Jay*_*Jay 30 ssh unix authentication sftp amazon-ec2

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

目前,我正在尝试做

sftp jay@server.name.com:/files> put -r ~/
Run Code Online (Sandbox Code Playgroud)

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

Cel*_*ada 41

尝试:

sftp -o "IdentityFile=keyname" jay@server.name.com
Run Code Online (Sandbox Code Playgroud)

您可以使用-o传递任何在~/.ssh/config.


Uta*_*ead 7

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

在服务器上:

  • .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
    用户用户名
    IdentityFile /path/to/private_key