Linux – SSH failing from script, working on command line (Git)

gitlinuxpermissionsrsa

Have 3 servers: Local, Bare, Development.

The following workflow works perfectly:

1. Make my local changes 
2. git push to Bare 
3. ssh into Bare 
4. $ ssh ip.of.Development.server "cd /path/to/Development/repo; git pull"

This does exactly what you would expect, content gets pulled to my Development server, displays on the page, all is well.

However, if I move the last line to my hooks/post-receive file on Bare, I get a

remote: Host key verification failed.

I can ssh from Development to Bare without issue and without using a password (after I set up an RSA pair).

Even if I cut the post-receive hook down to just

ssh ip.of.Development.server

I get the same error, but if I enter this exact same line on the command line, it works fine.

Best Answer

Inside the "bare" server you should edit the ~/.ssh/known_hosts file of the user that's running the hook.

Example of a line of ~/.ssh/known_hosts:

192.168.1.9 ssh-rsa AAAB3NzaC1yc2EAAAADAQABAAABAQDM5bg362+EqiRioaVO5f7L7a4NK94yHI6HXQCdge7WvmN9AFVhruXs31JUooxTD0tMe3nE0zDIt9fBcoIXNYjd2auCrRdT/2kvNg12aqhJpoxKeArekjQ10xmyjkDGQr6DUTzW7TOX55aucDbftO1chQ6+wG7mpvkE6N0J9HsQvJrjb3LO9JlEDCYFp2sSx3OxvCl33pEMk7zVhHftqP8hmZnQF8Y2/dO/nK/UawJVOVzyvImzvOhBFqKYgVIKajtjH/yodf9R1tOALqP9QQVBA9zJOLhc4q6Rcj3QVb+o6mv3Zl5QudZP6ATcFeKZPzEEUrqHbeQiZ2Ce72AUtD+7

You should remove the line that identifies the server that you're trying to connect to and then, BEFORE launching again your script, do a "ssh user@destination" with your user so that the destination server's host key to your known_hosts file. Like this:

localhost% ssh user@destination The authenticity of host 'destination (10.0.0.1)' can't be established. RSA key fingerprint is 51:a4:73:ef:6d:b6:40:c1:a2:1f:ba:33:a0:64:c0:f8. Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'destination' (RSA) to the list of known hosts.