How do I use my keyfile to sftp transfer data from one server to another
Try:
sftp -o "IdentityFile=keyname" [email protected]
You can use -o
to pass any option that's valid in ~/.ssh/config
.
Copy your PUBLIC key to the server using traditional means.
On server:
- Create
.ssh
if it doesn't exist:
[[ ! -d "${HOME}/.ssh" ]] && mkdir -p "${HOME}/.ssh"
- Implement the public key:
cat /path/to/public_key.pub >> "${HOME}/.ssh/authorized_keys"
- Set appropriate permissions. OpenSSH is VERY ANAL about the permissions of the files in question:
chmod go-rwx "${HOME}" "${HOME}/.ssh/authorized_keys"
After that, you should be able to log in from the client using the PRIVATE key. To automate a transfer, you want to use a batch file, which is just a text file containing a list of commands to execute.
echo "put filename.foo /safe/path/filename.foo" >> /tmp/batchfile.txt sftp -b /tmp/batchfile.txt -oIdentityFile=/path/to/private_key user@host
Alternatively, feel free to create a ~/.ssh/config file in ssh_config format so you can just type this in the future:
sftp -b /tmp/batchfile.txt host
Sample contents of ~/.ssh/config
Host the_hostname User user_name IdentityFile /path/to/private_key