Проблема с Cygwin ssh: Не удалось разрешить имя хоста awshost1: имя хоста или имя службы не предоставлено или неизвестно.

Вопрос или проблема

Я изучаю “инженерию стартапов”, столкнулся с этой ошибкой при использовании псевдонима ssh. Ниже приведены подробные шаги (выполнено в Cygwin на Windows 8):

$ mkdir -p ~/.ssh
$ cp ~/downloads/skey.pem ~/.ssh/
$ chmod 400 ~/.ssh/skey.pem
$ chmod 700 ~/.ssh
$ nano ~/.ssh/config
$ cat ~/.ssh/config
Host awshost1
HostName ec2-54-218-35-71.us-west-2.compute.amazonaws.com
User ubuntu
IdentityFile "~/.ssh/skey.pem"

Затем я выполнил следующую команду

ssh awshost1

Но выводится сообщение:

ssh: Не удалось разрешить имя хоста awshost1: имя хоста или сервиса не предоставлено или неизвестно

И детализированный вывод:

$ ssh -vv awshost
OpenSSH_6.2p2, OpenSSL 1.0.1e 11 Фев 2013
debug1: Чтение конфигурационных данных /etc/ssh_config
debug2: ssh_connect: needpriv 0
ssh: Не удалось разрешить имя хоста awshost: имя хоста или сервиса не предоставлено или неизвестно

Кто-нибудь, пожалуйста, помогите мне с этим. Спасибо.

Как вы можете видеть из вывода, ваш ssh-клиент читает /etc/ssh_config, а не ~/.ssh/config.
Попробуйте подключиться таким образом: ssh -F ~/.ssh/config awshost1.

вы можете запустить ssh-host-config

и поместить вашу конфигурацию ssh в /etc/ssh_config, что сделает его работу безупречной

В моей ситуации я обнаружил, что Cygwin по умолчанию не устанавливает свою версию openSSH.

Когда я запускаю в терминале Cygwin

    ssh myServer

Запускается ssh от Windows и он ищет файл конфигурации в

    c:\users\computerName/.ssh/config

Это решается запуском установки Cygwin setup-x86_64.exe и добавлением openssh

Ответ или решение

Ошибки, связанные с невозможностью разрешения имени хоста при использовании SSH в Cygwin, могут быть вызваны различными факторами. Рассмотрим основные теоретические аспекты, затем перейдем к конкретным примерам и возможным решениям.

Теория

Когда вы используете SSH для подключения к удаленному серверу, клиентская программа должна знать точный адрес или имя хоста для успешного установления соединения. В данном контексте используется файл конфигурации SSH, который должен находиться в домашнем каталоге пользователя и иметь определенный формат и параметры. Стандартный клиентский файл конфигурации находится по пути ~/.ssh/config.

Проблема, описанная в вопросе, связана с тем, что SSH клиент не может разрешить псевдоним awshost1 в действительный доменный адрес. Это может быть связано с несколькими причинами:

  1. Неправильный путь или отсутствующий файл конфигурации: SSH клиент может не находить файл конфигурации или использовать его неправильно.
  2. Конфликт версий SSH: Возможно, используется версия SSH, которая не поддерживает пользовательский файл конфигурации.
  3. Ошибки в структуре или содержимом файла конфигурации: Ошибки в синтаксисе могут препятствовать правильной интерпретации файла конфигурации.

Пример

Рассмотрим ваш конкретный случай. Содержимое файла конфигурации представлено следующим образом:

Host awshost1
HostName ec2-54-218-35-71.us-west-2.compute.amazonaws.com
User ubuntu
IdentityFile "~/.ssh/skey.pem"

Этот файл определяет псевдоним awshost1, который должен разрешаться в указанный доменный адрес ec2-54-218-35-71.us-west-2.compute.amazonaws.com. При этом предполагается, что используется правильный закрытый ключ для аутентификации (skey.pem), и задан корректный пользователь (ubuntu).

Применение

  1. Проверка версии SSH

    Убедитесь, что используется корректная версия SSH. В некоторых случаях Windows может использовать внутреннюю версию SSH, игнорируя файлы конфигурации, заданные в Cygwin. Попробуйте запустить команду which ssh, чтобы определить, какую версию программы использует ваша среда.

  2. Проверка наличия и прав доступа

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

    $ ls -la ~/.ssh/config

    Правильные права доступа для файла конфигурации: chmod 600 ~/.ssh/config.

  3. Установка и настройка OpenSSH в Cygwin

    Если в Cygwin не установлены необходимые пакеты, вам потребуется это сделать. Запустите setup-x86_64.exe и добавьте OpenSSH в список установленных программ.

  4. Использование команды SSH с указанием файла конфигурации

    Если клиент по-прежнему не распознает конфигурацию, попробуйте указать файл конфигурации вручную:

    ssh -F ~/.ssh/config awshost1
  5. Устранение проблем в конфигурации

    Удостоверьтесь в том, что файл конфигурации не содержит ошибок. Убедитесь, что путь к файлу ключа IdentityFile корректно указан (без кавычек) и совпадает с реальным расположением файла. Например:

    IdentityFile ~/.ssh/skey.pem
  6. Использование альтернативных путей

    Если проблема не решена, переместите или скопируйте файл конфигурации в директорию /etc/ssh_config. Однако учтите, что это коснется всех пользователей системы и требуется учет нужд и правил информационной безопасности.

В заключение, для успешного разрешения данной проблемы важно последовательно проверить все перечисленные аспекты: корректность конфигурации, установку правильной версии SSH, правильность путей и прав доступа, а также исключить возможные конфликты. Использование более строгих командных настроек с указанием файлов конфигурации поможет обойти возможные ограничения по умолчанию.

Оцените материал
Добавить комментарий

Капча загружается...