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


25

我不能scp,其他服务器仅采用sftp连接。

目前,我正在尝试

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

-i keyname不起作用,只需使用即可解决illegal option -- i

Answers:


34

尝试:

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

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


搞定了。谢谢!我如何正常保持在那儿?
周杰伦2012年

我不知道“正常保存”的意思。如果您想IdentityFile始终自动选择该选项,请查看UtahJarhead关于将其放入的答案~/.ssh/config
Celada

4

使用传统方式将您的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键从客户端登录。要自动执行传输,您想使用一个批处理文件,它只是一个文本文件,其中包含要执行的命令列表。

回声“ 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

不适用于下一批,上面的解决方案可以解决问题。
杰伊

1

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


对不起,它真的没有。
杰伊

1
这个“答案”对问题没有任何帮助。更糟糕的是,它只是到某天将消失的页面的链接。
约翰市长

0

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

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

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

chmod 600 privateFilePath.key 

在某些情况下,您需要将sudo放在命令前面,仅当您在受管理员保护的目录中工作时

希望对您有所帮助:)


当问题说该-i选项不起作用时,为什么您希望这会有所帮助?
斯科特,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.