11

The first time ssh-copy-id it will ask

# ssh-copy-id -i .ssh/id_dsa.pub [email protected]
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
13

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

As an alternative, you could do the following:

echo "yes \n" | ssh-copy-id -i .ssh/id_dsa.pub [email protected]

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .