Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

using ssh keys in bash script

Tags:

bash

ssh

key

tunnel

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 [email protected] -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 [email protected] -p 22

I get asked for the password

[email protected]'s password:

How do I make it so it uses the keys?

like image 779
Lurch Avatar asked Dec 01 '25 03:12

Lurch


1 Answers

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 to ssh:

/usr/bin/ssh -i /path/to/key -N -R 1234:localhost:22 [email protected] -p 22

Or cleaner way in your ~/.ssh/config like this:

Host mydomain.co.uk
  IdentityFile /path/to/key

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 in ssh-agent, which you can verify using ssh-add -L before starting the script. ssh-agent also solve the problem, if he keys are passphrase protected.

like image 84
Jakuje Avatar answered Dec 02 '25 19:12

Jakuje



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!