Идентификация удаленного хоста изменилась
Я пытаюсь подключить serverpilot вручную на облачном сервере в OVH (unbuntu 16) через терминал на моем Mac (ssh root@vpsXXX.ovh.net
)
Операция не удалась один раз, и теперь, когда я пытаюсь переустановить ее, я получаю сообщение об ошибке "ПРЕДУПРЕЖДЕНИЕ: УДАЛЕННАЯ ИДЕНТИФИКАЦИЯ ХОСТА ИЗМЕНИЛАСЬ!"
Я прочитал в блоге, набрав ssh-keygen -R hostname
может решить проблему, но когда я делаю это, я получаю сообщение "Host hostname not found in /Users/GregMac/.ssh/known_hosts"
Есть идеи, как это решить? (Я новичок в настройке серверов и в командной строке... вот почему я рассчитывал на серверный пилот)
Спасибо
1 ответ
Краткий ответ
Существует файл, который был изменен с момента последней попытки связаться с сервером SSH, работающим на этом хосте. Этот файл
/Users/whateveryourusernameis/.ssh/known_hosts
Где-то в этом файле есть запись, только одна строка, начиная с хоста, который вы пытались достичь в скобках, например [vpsXXX.ovh.net]
,
Если вы уверены, что сервер, к которому вы пытаетесь подключиться, - это сервер, который вы только что изменили и настроили самостоятельно, можно удалить эту строку и повторить попытку.
Более длинный ответ, позвонил в
SSH - это самый простой инструмент на поясе сисадмина, и то, как он работает, заслуживает вашего внимания.
Когда вы обращаетесь к серверу ssh, одним из первых шагов, которые делает сервер, является предоставление клиенту ssh собственного открытого ключа хоста. Этот ключ обычно добавляется к клиенту ~/.ssh/known_hosts
файл, так что если этот ключ изменяется между различными сеансами SSH, клиент будет предупрежден, что хост больше не является первоначальным хостом, с которым он связывался ранее. Это предупреждает вас о том, что хост, которого вы достигли, может быть самозванцем, если вы уже не знаете, без сомнения, что хост фактически изменился.
Ключ хоста является основной частью процесса согласования SSH, с которым вам следует ознакомиться, если вы администрируете какую-либо систему. Этот ключ обычно генерируется только один раз, при первом запуске SSH-сервера. Поэтому, если вы получили предупреждение об изменении ключа хоста, произошло одно из следующих событий:
- Новый сервер (или образ машины и т. Д.) Был развернут, а IP-адрес или имя домена, которые когда-то указывали на прежний сервер, были изменены, чтобы указывать на новый сервер (что типично, особенно в облачных средах).
- Кто-то изменил или удалил открытый ключ хоста на машине. Я сразу же удивлюсь, почему, поскольку обычно нет никаких причин для этого - одним исключением могут быть чрезвычайно строгие процедуры безопасности, которые периодически поворачивают ключ. Даже если это так, я ожидаю, что в этом случае будет распространяться новый отпечаток открытого ключа, чтобы избежать этой ошибки.
- Кто-то сумел перехватить ваш трафик, отправленный на этот IP-адрес или доменное имя, и направил его на свой собственный сервер либо в непродуманной попытке организовать MITM SSH-атаку, либо, скорее всего, он попытался вставить себя для сбора трафик на отдельный порт и протокол (например, HTTPS).
Если вы работаете в облачной среде, новые образы машин и экземпляры все время меняются местами для замены старых. Таким образом, способ удалить предупреждение и продолжить работу с SSH на вашем новом хосте - это просто удалить строку, на которой возникла ошибка, со старым отпечатком. ~/.ssh/known_hosts
файл. Как показывает практика, лучше всего удалить это, как только вы узнаете, что замена произошла, а затем войти в систему один раз, чтобы подтвердить и сохранить новый ключ хоста.
Наконец, уважайте своих коллег-администраторов и дайте им знать, что это произошло, чтобы они сами не чувствовали необходимость включать пожарную сигнализацию.
Постскриптум (или проверка ошибок ssh-keygen -R)
Я нашел страницу, похожую на ту, что вы сделали, и там было примечание о новом поведении, которое может изменить идентификацию открытого ключа хоста на какое-то хэшированное значение, о котором я раньше не слышал - вместо [vpsXXX.ovh.net]
это может выглядеть как [BF8JDF9SS@67IX]
вместо. Если это так, и вы не слишком много редактируете, вы можете переместить файл known_hosts, подключиться через ssh, и это создаст новый файл с одной строкой. Эта строка будет иметь правильное хешированное значение домена или IP-адреса, к которому вы подключились, и поэтому вы заменяете старый ключ хоста новым из только что созданного файла. Переместите отредактированный файл known_hosts обратно на место и вуаля - вы обновили сохраненный открытый ключ хоста для этого соединения.