Вопрос или проблема
Я зашел в систему на сервере 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, не передавая ключ в качестве параметра?
Если я правильно понимаю ваш вопрос, есть несколько вариантов…
-
установить расположение файла идентификации по умолчанию так же, как это сделано для SSH, как объясняется здесь… https://stackoverflow.com/questions/84096/setting-the-default-ssh-key-location
-
или создать псевдоним для вашей команды
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
-
Генерация ключей: Ваша команда
ssh-keygen
уже сгенерировала ключи. По умолчанию, они должны быть сохранены в файлах~/.ssh/id_rsa
(приватный ключ) и~/.ssh/id_rsa.pub
(публичный ключ). Если вы хотите, чтобыscp
использовал эти ключи по умолчанию, необходимо убедиться, что они находятся в соответствующих местах. -
Перемещение приватного ключа: Для использования приватного ключа без параметра
-i
, переместите его в директорию.ssh
. В вашем случае необходимо переместить файл приватного ключа в путь с использованием среды Cygwin:mv /cygdrive/c/users/userid/privkey/id_dsa ~/.ssh/id_rsa
-
Права доступа: Убедитесь, что права доступа к приватному ключу установлены корректно. SSH требует, чтобы только владелец файла имел доступ к приватному ключу:
chmod 600 ~/.ssh/id_rsa
-
Настройка сервера SSH: На стороне сервера Linux необходимо добавить ваш публичный ключ (
id_dsa.pub
) в файл~/.ssh/authorized_keys
:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
-
Запуск команды
scp
: После того как ключи находятся в нужных местах и с правильными правами, вы можете запустить командуscp
, не указывая параметр-i
:scp user@linux:/dirA/dirB/* .
Резюме
Теперь команда scp
должна корректно использовать ваш приватный ключ без необходимости ручного указания параметра -i
. Убедитесь, что все ключи и права доступны для вашего пользователя, и вы сможете передавать файлы между компьютерами без необходимости вводить пароль, что значительно упрощает процесс аутентификации и повышает безопасность соединений.
Настройка SSH-ключей правильно — важный шаг для оптимизации работы с удаленными системами. Надеюсь, эта информация была полезной и поможет вам в работе!