11

The first time ssh-copy-id it will ask

# ssh-copy-id -i .ssh/id_dsa.pub backup@example.com
The authenticity of host 'example.com (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is 39:fb:5e:70:30:33:2b:18:17:e9:4f:2f:91:b5:d2:21.
Are you sure you want to continue connecting (yes/no)? 

Is it possible to script this, so the script just will answer yes?

1

4 Answers 4

9

If your ssh-copy-id doesn't support the StrictHostKeyChecking option, you can write a script that does:

  1. Run ssh-keyscan against the target server to get the public key
  2. Append that to the known_hosts file
  3. Run ssh-copy-id
11

SSH has an option to automatically add any host keys to the trusted hosts file:

ssh-copy-id -i .ssh/id_dsa.pub -o StrictHostKeyChecking=no backup@example.com

As an alternative, you could do the following:

echo "yes \n" | ssh-copy-id -i .ssh/id_dsa.pub backup@example.com

Edit: since it appears these solutions don't work with ssh-copy-id, you could always create a ~/.ssh/config file with the following option in it:

StrictHostKeyChecking no

This should work with all SSH connections, regardless if they are invoked through a script or not.

5
  • 1
    Sadly doesn't work, and ssh-copy-id doesn't have -o
    – Sandra
    Aug 30, 2012 at 13:17
  • Weird, it does report that switch when issuing ssh-copy-id -?
    – brain99
    Aug 30, 2012 at 13:24
  • 1
    @sandra ssh-copy-id is a script. You can modify it to add -o StrictHostKeyChecking=no or disable that parameter in the ssh_config file.
    – ewwhite
    Aug 30, 2012 at 13:24
  • Also, you don't need to specify the key location... ssh-copy-id servername works fine.
    – ewwhite
    Aug 30, 2012 at 13:26
  • sudo sed -i.bak 's/ssh \$/ssh -o StrictHostKeyChecking=no \$/' $(which ssh-copy-id).
    – quanta
    Aug 30, 2012 at 16:47
1

This was from a decade ago, but is still a relevant question and doesn't have a functional answer:

ssh-copy-id -i .ssh/id_dsa.pub backup@example.com <<< yes

You will still need to enter your password.

Just in case someone else stumbles across this old post.

-1

Try this:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@example.com -y

it does not add the host keys to the known_hosts file but lets you copy (or append) the public key to the authorized_keys that you want to, if that is the sole purpose here.

1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.