- «Remote host identification has changed» warning when connecting over SSH
- 10 Answers 10
- Solution #1: Remove keys using ssh-keygen
- Solution #2: Add correct host key in /home/user/.ssh/known_hosts
- Solution 3: Just delete the known_hosts file If you have only one ssh server
- Ошибка GitHub “Remote host identification has changed!”: как исправить и чем вызвана
- Что произошло?
- Как исправить?
- Немного камасутры
«Remote host identification has changed» warning when connecting over SSH
As an aside, you may wish to avoid logging in locally and remotely as root, and instead use non-privileged users combined with sudo.
10 Answers 10
Did you recently reinstall the OS on your server or anything like that? That would cause this.
Solution #1: Remove keys using ssh-keygen
Use the -R option to removes all keys belonging to hostname from a known_hosts file. This option is useful to delete hashed hosts. If your remote hostname is server.example.com, enter:
$ ssh-keygen -R $ ssh-keygen -R $ ssh-keygen -R -f $ ssh-keygen -R server.example.com
Now, you can connect to the host without a problem.
Solution #2: Add correct host key in /home/user/.ssh/known_hosts
It is not necessary to delete the entire known_hosts file, just the offending line in that file. For example if you have 3 server as follows.
myserver1.com,64.2.5.111 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0EnGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0E nGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94H+uv304/ZDz6xZb9ZWsdm+264qReImZzruAKxnwTo4dcHkgKXKHeefnBKyEvvp/2ExMV9WT5DVe1viVw k= myserver2.com,125.1.12.5 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtDiERucsZzJGx/1kUNIOYhJbczbZHN2Z1gCnTjvO/0mO2R6KiQUP4hOdLppIUc9GNvlp1kGc3w7B9tREH6kghXFiBjrIn6VzUO4uwrnsMbnAnscD5EktgI7fG4ZcNUP 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGxQz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/IyI4NxHhhpltYZKW/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBf w= myserver3.com,125.2.1.15 ssh-rsa 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGx0lVkphVsvYD5hJzm0eKHv+oUXRT9v+QMIL+um/IyI4NxHhhpltYZKW as3533dka//sd33433////44632Z6MGnAazIviHBldxtGrFwvEnk82/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBfw==
To delete 2nd server (myserver.com), open file:
And hit dd command to delete line. Save and close the file. Or use following
Now go to line # 2, type the following command
Now delete line with dd and exit:
Or you can use the sed command as follows to delete offending key at line # 44:
Solution 3: Just delete the known_hosts file If you have only one ssh server
$ cd $ rm .ssh/known_hosts $ ssh ras.mydomain.com
Try connecting with ssh again
Now you should be able to connect your server via ssh:
ssh username@server-ip-here ssh nixcraft@server1.cyberciti.biz
Next, you will get a fresh prompt to add key to ~/.ssh/known_hosts as follows:
The authenticity of host '10.86.115.66 ()' can't be established. ECDSA key fingerprint is 4e:10:42:39:53:85:7f:89:89:dc:89:84:8d:79:e7:ed. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '10.86.115.66' (ECDSA) to the list of known hosts.
Ошибка GitHub “Remote host identification has changed!”: как исправить и чем вызвана
Если вы работали с GitHub по SSH и вдруг встретились с ошибкой @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @, у меня для вас две новости: хорошая и плохая. Хорошая: ошибку исправить можно. Плохая: придётся немного заняться камасутрой.
Что произошло?
24 марта 2023 года GitHub изменил свой серверный SSH ключ из-за кратковременной утечки внутренней информации компании. Простыми словами, они выложили не тот файл не в то место, но быстро среагировали и написали об этом.
Фанаты сервиса могли прочитать новость в блоге компании. Но если вы не фанат GitHub, то вы, скорее всего, узнали об этом из страшного сообщения в консоли при попытке взаимодействия со своим репозиторием на сайте:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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.
Как исправить?
В официальном сообщении из блога GitHub предлагают такое вот решение:
1. Удалить старые ключи простой командой:
2. Затем вручную добавить следующую строчку в файл known_hosts:
github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=
Файл known_hosts располагается:
Если вы работаете на Linux, можно поступить ещё проще — выполнить две команды:
$ ssh-keygen -R github.com $ curl -L https://api.github.com/meta* | jq -r '.ssh_keys | .[]' | sed -e 's/^/github.com /' >> ~/.ssh/known_hosts
Но если вы используете Windows, велика вероятность того, что официальная инструкция вам нихрена не поможет. Мне не помогла, даже после ручного редактирования файла known_hosts пуш в GitHub по SSH у меня не получился.
Немного камасутры
Короче, официальный метод не работает. Что делать дальше? Поскольку я значительно глупее чем Chat GPT 4, мне потребовалось несколько часов, много нецензурных ругательств и тонна нервных клеток, чтобы найти решение.
1. Установите сервер Open SSH. Перейдите в: Параметры системы (звёздочка в меню пуск) > Приложения и возможности > Управление дополнительными компонентами > Добавить компонент > Сервер OpenSSH
2. Дождитесь завершения установки. Если при установке произошёл сбой, проверьте, возможно у вас уже есть установленный сервер OpenSSH в папке C:\Windows\System32\OpenSSH. Честно сказать, не припоминаю, чтобы я что-то такое выполнял при первоначальной установке Git.
3. Затем настраиваем переменные среды — подсказываем системе, где искать SSH-сервер. Правой кнопкой мыши на «Мой компьютер» > свойства > Дополнительные параметры системы > Переменные среды > Создать переменную. Можно создать на уровне пользователя, а можно на уровне системы, без разницы.
4. Создайте переменную с именем GIT_SSH и значением C:\Windows\System32\OpenSSH.
5. Проверьте работоспособность SSH-сервера. Откройте Powershell под администратором И выполните последовательно команды:
> Get-Service ssh-agent Status Name DisplayName ------ ---- ----------- Stopped ssh-agent OpenSSH Authentication Agent
Команда проверит, где располагается служба SSH-сервера.
> Get-Service ssh-agent | Select StartType StartType --------- Disabled
Команда покажет статус службы SSH-сервера. В ответ можно получить три варианта ответа: Disabled — служба остановлена, Manual — служба запускается вручную и Automatic — служба запускается автоматически. Дальше необходимо указать то, как служба будет запускаться.
> Get-Service -Name ssh-agent | Set-Service -StartupType Automatic
Укажите любой желаемый вариант. Я предпочитаю не думать и дать службе запускаться автоматически. То же самое можно выполнить из меню управления службами Windows.
6. По идее на этом шаге всё, можно бежать клонировать репозитории по SSH. Но мне пришлось потупить ещё немного.
7. Сперва пришлось запустить сам SSH-агент так, чтобы система его обнаружила.
Часто рекомендуют сделать это при помощи следующей команды:
Но вы им не верьте, это команда для Linux, в Винде она не работает. Поэтому используйте вот эту команду:
8. И вот теперь можно добавить SSH-ключ стандартной командой:
9. Если команда не сработала, а вы уже на взводе, есть решение. Идите в диспетчер задач и остановите все-все сервисы ssh.
10. Если система всё ещё упорно отказывается воспринимать ключи, придётся действовать радикально. Идите в каталог C:\Users\USERNAME\.ssh и снесите всё к чёртовой бабушке.
Заново создайте в папке файл с именем known_hosts без расширения, добавьте в него строки, предоставленные GitHub:
github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg= github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=
Я не стал запариваться, просто скопировал все три строки и вставил их в пустой файл.
11. Затем я снова остановил все SSH-агенты и заново выполнил команду:
Теперь всё заработало. Надеюсь, эта инструкция вам помогла.
Инструкция, как сгенерировать SSH-ключ уже любезно предоставлена GitHub по ссылке.
- * — Социальные сети Instagram и Facebook принадлежат компании Meta и запрещены в РФ. Компания Meta признана экстремистской организацией на территории Российской Федерации.