Question
Perhaps my google-foo is failing me here… I’d like to connect and upload a mysql dump file via terminal using SFTP or SCP to my remote server using my ssh config file. According to documentation I’ve found, I should be able to do this:
sftp -F db.sql.gz webost@staging2.example.com /tmp
I have also tired the alias in my config:
sftp -F db.sql.gz myalias /tmp
When I do the two above, I simply get a print out of possible commands, -F
being one of them.
I can already connect via ssh using the shortcut in my local config just fine so I know that works:
ssh myalias
**Note: I am connecting using a private / public key pair so I never need to enter a password. The key pair does have a passphrase associated with it but OS X Keychain remembered that the first time I connected.
… so I am not sure what I am doing wrong.
Answer
-
From the help text: “
... [-F ssh_config] ...
“According to the above,
-F
expects one argument: path to an OpenSSH configuration file,~/.ssh/config
or similar. But you are giving it a gzipped SQL dump instead.Since plain
ssh myalias
is already working, you don’t even need the-F
option here. Justsftp myalias
would connect to the server. -
However, the OpenSSH
sftp
client does not support uploading files like you are trying to; it can only download files (using the syntaxhost:path
) or work in interactive mode. For uploading, you need to usescp
:scp db.sql.gz myalias:/tmp
or
scp db.sql.gz webost@staging2.example.com:/tmp
(sftp does have a batch mode in which it can read commands from a file, using -b
, but it is simpler to use scp
for single uploads.)
Check more discussion of this question.