Как использовать команду scp без опции -i и при этом найти закрытый ключ.

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

Я зашел в систему на сервере win2008, запускаю scp с опцией -i, указывающей на директорию, где находится закрытый ключ на сервере win2008.

scp -i "cygdrive/c/users/userid/privkey..." user@linux:/dirA/dirB/* .

Когда я выполняю эту команду на сервере win2008, она логинится на сервер Linux, сопоставляет ключи и передает файлы на сервер win2008. Если я не указываю ключ, она запрашивает у меня пароль.

Я сгенерировал ключи на сервере win2008, используя ssh-keygen. Я добавил ключ Linux в настройки winsshd под общественными ключами. Затем я взял ключ из ssh-keygen и положил его на сервер Linux.

Где команда scp ищет ключ? Как я могу запустить scp с сервера win2008, не передавая ключ в качестве параметра?

Если я правильно понимаю ваш вопрос, есть несколько вариантов…

  1. установить расположение файла идентификации по умолчанию так же, как это сделано для SSH, как объясняется здесь… https://stackoverflow.com/questions/84096/setting-the-default-ssh-key-location

  2. или создать псевдоним для вашей команды scp, включив модификатор, таким образом… alias scp='scp -i /path/of/keyfile'

Оба варианта должны работать, но я рекомендую вариант 1 вместо варианта 2. Это более правильный способ сделать это.

Я думаю, я нашел свой собственный ответ. Похоже, scp ищет файл закрытого ключа с именем id_dsa И хочет, чтобы файл находился в директории .ssh. Как только я нашел home/.ssh в структуре каталогов cygwin (еще один ключевой момент в этой загадке) и добавил файл закрытого ключа с именем id_dsa и запустил команду scp без опции -i, это сработало. Спасибо всем, кто посылал ‘умные’ вибрации, чтобы я смог разобраться в этом. Теперь я не в замешательстве!
Мне нравятся все предложенные здесь идеи. Ценю быструю реакцию.

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

Для выполнения команды scp без указания параметра -i, необходимо понять, где именно scp ищет приватные ключи для аутентификации. Стандартным местом для хранения ключей SSH является директория .ssh в домашнем каталоге пользователя.

Шаги для настройки ключа SSH без использования параметра -i

  1. Генерация ключей: Ваша команда ssh-keygen уже сгенерировала ключи. По умолчанию, они должны быть сохранены в файлах ~/.ssh/id_rsa (приватный ключ) и ~/.ssh/id_rsa.pub (публичный ключ). Если вы хотите, чтобы scp использовал эти ключи по умолчанию, необходимо убедиться, что они находятся в соответствующих местах.

  2. Перемещение приватного ключа: Для использования приватного ключа без параметра -i, переместите его в директорию .ssh. В вашем случае необходимо переместить файл приватного ключа в путь с использованием среды Cygwin:

    mv /cygdrive/c/users/userid/privkey/id_dsa ~/.ssh/id_rsa
  3. Права доступа: Убедитесь, что права доступа к приватному ключу установлены корректно. SSH требует, чтобы только владелец файла имел доступ к приватному ключу:

    chmod 600 ~/.ssh/id_rsa
  4. Настройка сервера SSH: На стороне сервера Linux необходимо добавить ваш публичный ключ (id_dsa.pub) в файл ~/.ssh/authorized_keys:

    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
  5. Запуск команды scp: После того как ключи находятся в нужных местах и с правильными правами, вы можете запустить команду scp, не указывая параметр -i:

    scp user@linux:/dirA/dirB/* .

Резюме

Теперь команда scp должна корректно использовать ваш приватный ключ без необходимости ручного указания параметра -i. Убедитесь, что все ключи и права доступны для вашего пользователя, и вы сможете передавать файлы между компьютерами без необходимости вводить пароль, что значительно упрощает процесс аутентификации и повышает безопасность соединений.

Настройка SSH-ключей правильно — важный шаг для оптимизации работы с удаленными системами. Надеюсь, эта информация была полезной и поможет вам в работе!

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

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