我想使用我的 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
来自帮助文本:“
... [-F ssh_config] ...
”根据上述内容,
-F
需要一个参数:OpenSSH 配置文件的路径,~/.ssh/config
或类似参数。但是您给的是 gzip 压缩的 SQL 转储。由于 plain
ssh myalias
已经可以工作了,您甚至不需要-F
这里的选项。只需sftp myalias
连接到服务器即可。但是,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 [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 来让它工作。