Reputation: 6939
I have the following command works in my script that adds the host to the known hosts in ssh.
VAR2=$(expect -c '
spawn ssh -o StrictHostKeyChecking=no '"$REMOTE_HOST_USER@$REMOTE_HOST_IP"'
expect "*?assword:*"
send "'"$REMOTE_HOST_PASSWD"'\r"
expect {
"Permission denied, please try again." {
exit '"$WRONG_PASSWORD"'
}
}
')
Works fine, but I need to control before the command if the host is already in known_hosts and not execute command if it is already in known_hosts. How can i check if an host is in known_hosts?
Upvotes: 17
Views: 24742
Reputation: 20753
Try: ssh-keygen -F <hostname>
Will show the known_hosts
line(s) if the hostname fingerprint is found and the command returns 0
, otherwise nothing is shown and the command returns 1
.
Upvotes: 47
Reputation: 2170
According to ssh-keygen(1) man page
-F hostname Search for the specified hostname in a known_hosts file, listing any occurrences found. This option is useful to find hashed host names or addresses and may also be used in conjunction with the -H option to print found keys in a hashed format.
Upvotes: 4