Вопрос или проблема
У меня есть проблема, когда я пытаюсь использовать SSH через терминал. Я знаю, что в Windows нужно использовать PuTTY для упрощения таких соединений, и он работает нормально при подключении к удаленным серверам, которые имеют публичную версию моего файла key.ppk
.
Проблема в том, что при использовании PowerShell/Git Bash я не могу загрузить что-либо через SSH. Он грузит бесконечно на следующем экране:
У меня мой key.ppk
загружен в списке ключей Pageant:
Теперь, это не было проблемой до сих пор, потому что я в основном управлял своими SSH-соединениями через сессии PuTTY и также через Git-клиент (я использую GitKraken), который, насколько мне известно, использует Plink.
Но теперь, в рабочем проекте мне нужно предоставить свой приватный SSH-ключ в директории, чтобы сборка Docker могла его получить и получить доступ к репозиториям компании (мой публичный ключ уже загружен в мой аккаунт BitBucket). Конечно, это не работает.
Итак, у меня есть два вопроса:
- Как сделать так, чтобы мой SSH-ключ был доступен для использования в терминале
- Также мне хотелось бы узнать, как получить версию OpenSSH моего ключа, чтобы сохранить его как файл без расширения
id_rsa
в упомянутой директории репозитория для сборки Docker
Я знаю, что используя PuTTY можно сделать последнее (Меню Конверсия > Экспортировать ключ OpenSSH), но я все еще не знаю, достаточно ли сохранить его без расширения.
Кстати: я много искал, и есть много вопросов по этому поводу, но ни один из них не был полезен.
Заранее спасибо.
Файл без расширения id_rsa должен быть достаточно. Вот некоторые вещи, которые вы можете попробовать:
- Если у git bash есть утилита
file
, вы можете запустить ее на ssh-ключе (file id_rsa
), чтобы проверить, что это правильный тип файла. - Переместите ключ в папку с названием “.ssh” в вашей директории пользователя Windows. Я не помню, есть ли у git bash своя отдельная директория пользователя. Если да, вы должны использовать именно ее.
Если ничего из этого не сработает, вы можете попробовать использовать ssh-agent
от OpenSSH:
# запустить ssh-agent в фоновом режиме
$ eval $(ssh-agent -s)
> Agent pid 59566
$ ssh-add ~/.ssh/id_rsa # (или тот путь, где у вас находится ssh-ключ)
Ответ или решение
Конечно! Давайте разберемся с вашей проблемой использования SSH-ключей PuTTY в терминале Windows и получением OpenSSH версии вашего ключа.
Как сделать SSH-ключ доступным для использования в терминале
-
Конвертация ключа из формата PuTTY в OpenSSH:
- Запустите PuTTYgen.
- Загрузите ваш существующий ключ
.ppk
(File > Load). - После загрузки ключа, выберите Conversions в меню и выберите Export OpenSSH key.
- Сохраните ключ как
id_rsa
(без расширения) в директорииC:\Users\<Ваше_имя_пользователя>\.ssh
.
-
Настройка правильных прав доступа:
- Откройте Git Bash или PowerShell и выполните следующую команду, чтобы установить правильные права доступа к файлу:
chmod 600 ~/.ssh/id_rsa
- Откройте Git Bash или PowerShell и выполните следующую команду, чтобы установить правильные права доступа к файлу:
-
Перемещение ключа в правильную директорию:
- Убедитесь, что ключ находится в папке
.ssh
в вашем домашнем каталоге (C:\Users\<Ваше_имя_пользователя>\.ssh
). Если папка.ssh
не существует, создайте её.
- Убедитесь, что ключ находится в папке
Использование ssh-agent для управления ключами
-
Запустите ssh-agent:
- В терминале (Git Bash или PowerShell) выполните команды:
eval $(ssh-agent -s)
- Это запустит ssh-agent и выдаст его PID.
- В терминале (Git Bash или PowerShell) выполните команды:
-
Добавьте ключ в ssh-agent:
- Выполните команду:
ssh-add ~/.ssh/id_rsa
- Если ключ успешно добавлен, вы сможете использовать SSH для подключения к вашим удалённым серверам.
- Выполните команду:
Проверка типа файла ключа
Для проверки того, что ваш ключ действительно является валидным SSH-ключом, вы можете использовать команду file
(если она доступна в вашей среде):
file ~/.ssh/id_rsa
Заключение
Теперь ваш SSH-ключ должен корректно работать в терминале Windows (включая PowerShell и Git Bash). Используйте ssh
команды для подключения к вашим удалённым серверам. Хранение вашего приватного ключа в формате id_rsa без расширения является стандартным и не вызывает проблем, если у вас правильные права доступа.
Если вы по-прежнему сталкиваетесь с проблемами, возможно, стоит обратить внимание на настройки сети или параметры брандмауэра, которые могут блокировать ваш SSH-трафик. Надеюсь, это поможет вам успешно завершить вашу задачу!