
Есть ли способ временно проигнорировать мой ~/.ssh/known_hosts
файл?
mbp:~ alexus$ ssh 10.52.11.171
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Please contact your system administrator.
Add correct host key in /Users/alexus/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/alexus/.ssh/known_hosts:155
RSA host key for 10.52.11.171 has changed and you have requested strict checking.
Host key verification failed.
mbp:~ alexus$
ПРИМЕЧАНИЕ:
.. по нескольким ответам/комментариям я понимаю, что мой вопрос немного вводит в заблуждение, настолько он короткийожидаемое поведение), так что это нормально (в моем случае)есть веская причина, по которой я хочу увидеть "игнорировать это")
решение1
Вы можете использовать ssh -o StrictHostKeyChecking=no
для отключения проверки known_hosts
на мгновение. Но я бы не советовал этого делать. Вы действительно должны проверить, почему изменился ключ хоста.
Другой вариант — добавить определенную запись в ваш ~/.ssh/config
для рассматриваемого хоста. Это может быть допустимым подходом, если у вас есть определенный хост, который генерирует новые ключи хоста каждый раз при перезагрузке и перезагружается по веской причине несколько раз в день.
Host <your problematic host>
StrictHostKeyChecking no
решение2
Чтобы полностью игнорировать файл известных хостов в среде POSIX, установите параметры GlobalKnownHostsFile
и UserKnownHostsFile
следующим образом /dev/null
:
ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null user@host
Установка этой StrictHostKeyChecking=no
опции позволит вам подключаться только по SSHвсе равно будет отображаться предупреждение:
ssh -o StrictHostKeyChecking=no user@host
Как уже отмечали другие, лучше всего заняться основной проблемой. Вы могли бы рассмотретьАутентификация по сертификату SSHнапример, для проверки хостов.
решение3
Если вы переустановили сервер и, следовательно, идентификация изменилась, вам следует просто удалить указанную строку 155 /Users/alexus/.ssh/known_hosts
и продолжить.
Если вы переключаетесь между различными частными сетями, вам следует использовать имена хостов для подключения, так как клиент ssh также сохранит ключи в зависимости от имени хоста. Добавьте что-то вроде этого в ваш /etc/hosts
:
10.52.11.171 server1
10.52.11.171 server2
и затем использовать ssh server1
при подключении к подсети 1 и ssh server2
при подключении к подсети 2. Таким образом, оба сервера могут иметь разные ключи хоста.
решение4
-o StrictHostKeyChecking=no
работает только в том случае, если хост еще не присутствует в файле known_hosts.
Я думаю, что это будет чище (без предупреждений), если вы ожидаете, что ключ хоста изменится, возможно, из-за клонирования виртуальной машины, чтобы принудительно игнорировать такие хосты, как этот:
# Handle possible SSH key changes
host_key=$(ssh-keyscan -t rsa ${host_ip})
grep "${host_key}" ~/.ssh/known_hosts >/dev/null || {
ssh-keygen -R ${host_ip}
echo ${host_key} >> ~/.ssh/known_hosts
}
# connect as normal way
ssh root@${host_ip} "hostname"