Данный пример приведен на разных UNIX-системах — копирование файла с FreeBSD на CentOS. Использовать его можно в различных средах.
Копирование данных утилитой scp выполняется по протоколу SSH. Таким образом, для беспарольного копирования необходимо разрешить подключение по SSH без пароля. Это делается с помощью сертификата безопасности.
Для безопасной передачи данных между системами UNIX нужно сгенерировать закрытый и открытый ключи на одном компьютере и передать открытый на второй. Это делается по нижеописанному алгоритму.
На первом компьютере, с которого планируется копировать данные (FreeBSD) генерируем ключи:
ssh-keygen -t rsa
После нажатия Enter система попросит ввести параметры размещения ключа и пароль. Ничего не меняем, нажимая ввод и соглашаясь со значениями по умолчанию.
* в моем примере, генерация ключа проходила под учетной записью root и публичный ключ был создан по пути /root/.ssh/id_rsa.pub
Теперь скопируем публичный ключ на второй компьютер (CentOS):
scp /root/.ssh/id_rsa.pub [email protected]:/home/admins24/.ssh/authorized_keys
* как видно, мы копируем сгенерированный ключ на компьютер server2, подключившись под учетной записью admins24 и размещаем его в домашнюю директорию этого пользователя под новым именем authorized_keys. Каталог /home/admins24/.ssh должен быть создан на втором компьютере заранее командой mkdir.
После ввода команды система запросит пароль для учетной записи admins24 на компьютере server2 и скопирует ключ.
На втором сервере (CentOS или к которому будем подключаться и копировать на него данные) проверяем настройки ssh:
vi /etc/ssh/sshd_config
Мы должны найти строку:
AuthorizedKeysFile .ssh/authorized_keys
Если данной строки нет или опция AuthorizedKeysFile имеет другое значение, нужно привести конфигурацию к данному виду. После перезапустить службу ssh:
systemctl restart sshd
Готово. Последующие команды SCP на копирование данных с первого компьютера на второй будут выполняться без запроса пароля, например:
scp /tmp/backup.tar.gz [email protected]:/backup/
В случае, если мы хотим использовать сгенерированный ключ на другом компьютере, переносим файлы id_rsa и id_rsa.pub. Например, у нас есть третий компьютер с Ubuntu (server3) и мы хотим теперь с него копировать файлы на CentOS без пароля. Заходим на компьютер с FreeBSD и копируем ключи:
scp /root/.ssh/{id_rsa,id_rsa.pub} [email protected]:/root/.ssh/
* мы скопировали файлы id_rsa и id_rsa.pub на другой компьютер. Необходимо обратить внимание, что сертификаты должны находится к каталоге .ssh домашней паки того пользователя, от которого мы хотим подключаться.
Теперь с server3 можно копировать данные без пароля на server2:
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
Описание: при попытке передачи данных после копирования ключей выскакивает вышеописанная ошибка. Полный текст может быть, примерно, следующим:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!Someone could be eavesdropping on you right now (man-in-the-middle attack)!It is also possible that a host key has just been changed.The fingerprint for the RSA key sent by the remote host is6f:e6:56:85:b6:be:52:3d:8c:5e:3a:8e:68:e2:0e:16.Please contact your system administrator.Add correct host key in /home/admins24/.ssh/known_hosts to get rid of this message.Offending RSA key in /home/admins24/.ssh/known_hosts:6RSA host key for 192.168.0.18 has changed and you have requested strict checking.
Причина: произошла смена ключа SSH и так как, на компьютере в файле ~/.ssh/known_hosts находится старый ключ, система не позволяет использовать сертификат в целях безопасности.
Решение: открываем файл с базой ключей:
vi ~/.ssh/known_hosts
Находим строчку с нашим удаленным компьютером, для которого получаем ошибку и удаляем ее.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies