将 SCP 或 SFTP 与我的 SSH 配置文件一起使用?

将 SCP 或 SFTP 与我的 SSH 配置文件一起使用?

我想使用我的 SSH 配置文件通过终端使用 SFTP 或 SCP 连接并将 MySQL 转储文件上传到我的远程服务器。根据我找到的文档,我应该能够做到这一点:

sftp -F db.sql.gz [email protected] /tmp

我也尝试过在我的配置中使用别名:

sftp -F db.sql.gz myalias /tmp

当我执行上述两项操作时,我只是得到了可能的命令的打印输出,-F这是其中之一。

我已经可以使用本地配置中的快捷方式通过 SSH 进行连接,所以我知道这是可行的:

ssh myalias

笔记:我使用私钥/公钥对进行连接,因此无需输入密码。密钥对确实有一个与之关联的密码,但 OS X Keychain 在我第一次连接时记住了该密码。

所以我不确定我做错了什么?

答案1

  1. 来自帮助文本:“ ... [-F ssh_config] ...

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

    由于 plainssh myalias已经可以工作了,您甚至不需要-F这里的选项。只需sftp myalias连接到服务器即可。

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

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

    ...或scp工具:

    scp db.sql.gz myalias:/tmp
    

    或者

    scp db.sql.gz [email protected]:/tmp
    

(sftp 确实具有批处理模式,其中它可以使用从文件读取命令-b,但对于单个上传来说使用起来更简单scp。)

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

答案2

ForwardAgent 配置导致的问题如下,

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

我的情况是,这是由于 ssh 配置上的“ForwardAgent”导致 scp 挂起。一旦将其注释掉,对我来说就有效了。

另外,您可以复制一份注释掉 ForwardAgent 行的文件,然后使用 scp -F 来让它工作。

相关内容