Назад | Перейти на главную страницу

SSH: в частной сети, как получить доступ к удаленному компьютеру с исходного компьютера без использования открытого ключа ssh

У меня есть настройка сборки кода AWS, где вы хотите получить доступ к экземпляру EC2 ubuntu, оба находятся в одной VPC и частной подсети. Хотите выполнить команду от сборки кода к экземпляру, используя SSH, но получаю ошибку ниже при попытке выполнить команду на удаленном экземпляре:

$ ssh -o 'PubkeyAuthentication no' ubuntu@X.X.X.X uname
Host key verification failed.

Я также попытался создать файл .pem и вставил открытый ключ в новый файл pem, изменил его разрешение и использовал его. Но безуспешно.

$ssh -i "remote-instance.pem" ubuntu@X.X.X.X uname
Host key verification failed.

Можно ли добиться того же с помощью некоторых опций?

Как вы знаете, впервые ssh к удаленному хосту он спрашивает вас, хотите ли вы сохранить ключ удаленного хоста к ~/.ssh/known_hosts. Каждый раз, когда вы впоследствии обращаетесь к удаленному хосту ssh подтверждает полученный ключ хоста против ~/.ssh/known_hosts.

Однако когда ssh вбегает CodeBuild или какая-то другая неинтерактивная установка, он не может спросить, принимать ли удаленный ключ (потому что в неинтерактивном сеансе спрашивать не у кого), и чтобы быть в безопасности, он не работает с Ошибка проверки ключа хоста

У вас есть два варианта, как это исправить:

  1. Более безопасный - предоставить ключ хоста сервера Ubuntu вашему CodeBuild и сохранить его в known_hosts файл где ssh можете проверить это. Убедитесь, что он находится на правильном пути с правильными правами собственности и разрешениями.

  2. Менее безопасный это отключить проверку:

    ssh -o StrictHostKeyChecking=no {your-ubuntu-server}
    

Надеюсь, это поможет :)

Вам действительно нужна PubkeyAuthentication, которая будет выполняться по умолчанию, поэтому не указывайте «-o PubkeyAuthentication = no». Файл pem, на который указывает "-i", должен быть закрытым ключом, а не открытым ключом. Открытый ключ уже будет на вашем сервере Ubuntu.