在我的ssh配置文件中使用SCP或SFTP?


44

也许我的google-foo在这里让我失败了...我想通过终端使用SFTP或SCP通过ssh配置文件连接并上传mysql dump文件到我的远程服务器。根据我发现的文档,我应该能够做到这一点:

sftp -F db.sql.gz webost@staging2.example.com /tmp

我也厌倦了我的配置中的别名:

sftp -F db.sql.gz myalias /tmp

当我完成以上两个操作时,我只是从可能的命令中打印出来,-F成为其中之一。

我已经可以使用本地配置中的快捷方式通过ssh进行连接,因此我知道可以使用:

ssh myalias

**注意:我正在使用私钥/公钥对进行连接,因此我无需输入密码。密钥对确实有关联的密码短语,但是OS X钥匙串记得我是第一次连接。

...所以我不确定自己在做什么错。

Answers:


46
  1. 在帮助文本中:“ ... [-F ssh_config] ...

    根据上述内容,-F需要一个参数:OpenSSH配置文件的路径~/.ssh/config或类似名称。但是,您给它的是gzip压缩的SQL转储。

    由于plain ssh myalias已经可以使用,因此您甚至不需要-F此处的选项。只是sftp myalias将连接到服务器。

  2. 但是,OpenSSH sftp客户端不支持您尝试上传的文件。它只能下载文件(使用语法host:path)或以交互模式工作。要上传,您需要使用互动模式...

    $ sftp myalias
    sftp> cd /tmp
    sftp> put db.sql.gz
    

    ...或scp工具:

    scp db.sql.gz myalias:/tmp
    

    要么

    scp db.sql.gz webost@staging2.example.com:/tmp
    

(sftp确实具有批处理模式,在该模式下,它可以使用来从文件中读取命令-b,但是scp对于单个上载而言更简单。)

还有其他SFTP客户端-lftp适合交互使用,而curl可以更容易实现自动化。对于备份等,您还可以使用rsync(运行其自己的协议,但仍在SSH内)。


哇,这太完美了,效果很好!我只是熟悉终端,所以将来确实会派上用场。
丹尼·英格兰

0

由ForwardAgent配置引起的问题如下,

Host dockervm
   HostName x.x.x.x
   User root
   Preferredauthentications publickey
   ForwardAgent yes

我的情况是由于ssh配置中的'ForwardAgent'导致scp挂起。注释完后,为我工作。

另外,您可以拥有带有ForwardAgent行注释的文件副本,并使用scp -F使其正常工作。

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.