Вопрос или проблема
Я изучаю “инженерию стартапов”, столкнулся с этой ошибкой при использовании псевдонима 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
в действительный доменный адрес. Это может быть связано с несколькими причинами:
- Неправильный путь или отсутствующий файл конфигурации: SSH клиент может не находить файл конфигурации или использовать его неправильно.
- Конфликт версий SSH: Возможно, используется версия SSH, которая не поддерживает пользовательский файл конфигурации.
- Ошибки в структуре или содержимом файла конфигурации: Ошибки в синтаксисе могут препятствовать правильной интерпретации файла конфигурации.
Пример
Рассмотрим ваш конкретный случай. Содержимое файла конфигурации представлено следующим образом:
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
).
Применение
-
Проверка версии SSH
Убедитесь, что используется корректная версия SSH. В некоторых случаях Windows может использовать внутреннюю версию SSH, игнорируя файлы конфигурации, заданные в Cygwin. Попробуйте запустить команду
which ssh
, чтобы определить, какую версию программы использует ваша среда. -
Проверка наличия и прав доступа
Убедитесь, что файл конфигурации действительно находится по указанному пути и имеет корректные права доступа:
$ ls -la ~/.ssh/config
Правильные права доступа для файла конфигурации:
chmod 600 ~/.ssh/config
. -
Установка и настройка OpenSSH в Cygwin
Если в Cygwin не установлены необходимые пакеты, вам потребуется это сделать. Запустите
setup-x86_64.exe
и добавьте OpenSSH в список установленных программ. -
Использование команды SSH с указанием файла конфигурации
Если клиент по-прежнему не распознает конфигурацию, попробуйте указать файл конфигурации вручную:
ssh -F ~/.ssh/config awshost1
-
Устранение проблем в конфигурации
Удостоверьтесь в том, что файл конфигурации не содержит ошибок. Убедитесь, что путь к файлу ключа
IdentityFile
корректно указан (без кавычек) и совпадает с реальным расположением файла. Например:IdentityFile ~/.ssh/skey.pem
-
Использование альтернативных путей
Если проблема не решена, переместите или скопируйте файл конфигурации в директорию
/etc/ssh_config
. Однако учтите, что это коснется всех пользователей системы и требуется учет нужд и правил информационной безопасности.
В заключение, для успешного разрешения данной проблемы важно последовательно проверить все перечисленные аспекты: корректность конфигурации, установку правильной версии SSH, правильность путей и прав доступа, а также исключить возможные конфликты. Использование более строгих командных настроек с указанием файлов конфигурации поможет обойти возможные ограничения по умолчанию.