This may be because StrictHostKeyChecking
option is set to ask
. It may not be set explicitly, ask
is the default value.
From man 5 ssh_config
:
StrictHostKeyChecking
If this flag is set to yes
, ssh(1)
will never automatically add host keys to the ~/.ssh/known_hosts
file, and refuses to connect to hosts whose host key has changed. This provides maximum protection against trojan horse attacks, though it can be annoying when the /etc/ssh/ssh_known_hosts
file is poorly maintained or when connections to new hosts are frequently made. This option forces the user to manually add all new hosts. If this flag is set to no
, ssh will automatically add new host keys to the user known hosts files. If this flag is set to ask
, new host keys will be added to the user known host files only after the user has confirmed that is what they really want to do, and ssh will refuse to connect to hosts whose host key has changed. The host keys of known hosts will be verified automatically in all cases. The argument must be yes
, no
, or ask
. The default is ask
.
Looks like you would like to set the option to no
. In /etc/ssh/ssh_config
the line would be:
StrictHostKeyChecking no
Or you can override the option during ssh
or scp
invocation by passing -o StrictHostKeyChecking=no
to the tool, e.g:
ssh -o StrictHostKeyChecking=no root@host "command"
scp -o StrictHostKeyChecking=no /local/file root@host:"$directory"/
Note there is also VerifyHostKeyDNS
option with the default value ask
. Refer to the manual. If you need to change it, the solution is similar.