Как использовать SCP без пароля

Мы предоставляем услуги удаленного администрирования серверов

Как использовать SCP без пароля

FacebookTwitterVK
Обновлено Обновлено: Опубликовано Опубликовано:

Данный пример приведен на разных 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:

scp /tmp/backup.tar.gz [email protected]:/backup/

Возможные ошибки

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 is
6f: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:6
RSA host key for 192.168.0.18 has changed and you have requested strict checking.

Причина: произошла смена ключа SSH и так как, на компьютере в файле ~/.ssh/known_hosts находится старый ключ, система не позволяет использовать сертификат в целях безопасности.

Решение: открываем файл с базой ключей:

vi ~/.ssh/known_hosts

Находим строчку с нашим удаленным компьютером, для которого получаем ошибку и удаляем ее.


Warning: file_exists(): open_basedir restriction in effect. File(/home/rsa/sites/admins24.com/.maintenance) is not within the allowed path(s): (/home/rsa/sites/dev.admins24.com:.) in /home/rsa/sites/admins24.com/wp-includes/load.php on line 306

Warning: file_exists(): open_basedir restriction in effect. File(/home/rsa/sites/admins24.com/wp-content/plugins/amp/assets/css/amp-default.css) is not within the allowed path(s): (/home/rsa/sites/dev.admins24.com:.) in /home/rsa/sites/admins24.com/wp-content/plugins/amp/includes/sanitizers/class-amp-style-sanitizer.php on line 1282

Warning: file_exists(): open_basedir restriction in effect. File(/home/rsa/sites/admins24.com/wp-includes/Requests/Cookie/Jar.php) is not within the allowed path(s): (/home/rsa/sites/dev.admins24.com:.) in /home/rsa/sites/admins24.com/wp-includes/class-requests.php on line 145

Warning: file_exists(): open_basedir restriction in effect. File(/home/rsa/sites/admins24.com/wp-content/plugins/folders/includes/tree.class.php) is not within the allowed path(s): (/home/rsa/sites/dev.admins24.com:.) in /home/rsa/sites/admins24.com/wp-content/plugins/folders/includes/folders.class.php on line 2669

Warning: file_exists(): open_basedir restriction in effect. File(/home/rsa/sites/admins24.com/wp-content/plugins/folders/includes/form.class.php) is not within the allowed path(s): (/home/rsa/sites/dev.admins24.com:.) in /home/rsa/sites/admins24.com/wp-content/plugins/folders/includes/folders.class.php on line 2669

Warning: file_exists(): open_basedir restriction in effect. File(/home/rsa/sites/admins24.com/wp-content/plugins/folders/includes/class-wpml.php) is not within the allowed path(s): (/home/rsa/sites/dev.admins24.com:.) in /home/rsa/sites/admins24.com/wp-content/plugins/folders/includes/folders.class.php on line 2669

Warning: file_exists(): open_basedir restriction in effect. File(/home/rsa/sites/admins24.com/wp-content/plugins/folders/includes/class-polylang.php) is not within the allowed path(s): (/home/rsa/sites/dev.admins24.com:.) in /home/rsa/sites/admins24.com/wp-content/plugins/folders/includes/folders.class.php on line 2669

Fatal error: Uncaught Error: Class 'Requests_Cookie_Jar' not found in /home/rsa/sites/admins24.com/wp-includes/class-requests.php:591 Stack trace: #0 /home/rsa/sites/admins24.com/wp-includes/class-requests.php(365): Requests::set_defaults('https://admins2...', Array, NULL, 'GET', Array) #1 /home/rsa/sites/admins24.com/wp-includes/class-http.php(394): Requests::request('https://admins2...', Array, NULL, 'GET', Array) #2 /home/rsa/sites/admins24.com/wp-includes/class-http.php(626): WP_Http->request('https://admins2...', Array) #3 /home/rsa/sites/admins24.com/wp-includes/http.php(162): WP_Http->get('https://admins2...', Array) #4 /home/rsa/sites/admins24.com/wp-content/plugins/amp/src/RemoteRequest/WpHttpRemoteGetRequest.php(114): wp_remote_get('https://admins2...', Array) #5 /home/rsa/sites/admins24.com/wp-content/plugins/amp/src/RemoteRequest/CachedRemoteGetRequest.php(125): AmpProject\AmpWP\RemoteRequest\WpHttpRemoteGetRequest->get('https://admins2...') #6 /home/rsa/sites/admins24.com/wp-content/plugins/amp/includes/sanit in /home/rsa/sites/admins24.com/wp-includes/class-requests.php on line 591