I've setup ssh keys form server A to server B and I can login to server B without a password. I'm trying to setup a reverse ssh tunnel in a bash script. From the command line if I do
ssh -N -R 1234:localhost:22 user@mydomain.co.uk -p 22
form server A it works as expected i.e no password required, however if I use it in a script
#!/bin/bash
/usr/bin/ssh -N -R 1234:localhost:22 user@mydomain.co.uk -p 22
I get asked for the password
user@mydomain.co.uk's password:
How do I make it so it uses the keys?
You need to let
ssh
know where it should search for the keys, if they are not in standard location and not passphrase protected. The easiest thing is by specifying-i
switch directly tossh
:Or cleaner way in your
~/.ssh/config
like this:But make sure the script is run with your user context, so the script will see the configuration file.
If you have keys in standard location (
~/.ssh/id_rsa
), your code should work just fine. Although it should work if you have your keys stored inssh-agent
, which you can verify usingssh-add -L
before starting the script.ssh-agent
also solve the problem, if he keys are passphrase protected.