Копирование файлов по ssh без пароля
SSH (Secure Shell) - это сетевой протокол, который обеспечивает безопасное удаленное соединение между двумя системами. Системные администраторы используют утилиты SSH для управления компьютерами, копирования или перемещения файлов между системами. Поскольку SSH передает данные по зашифрованным каналам, безопасность находится на высоком уровне.
Возможные ошибки
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/dmosk/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/dmosk/.ssh/known_hosts:6
RSA host key for 192.168.0.18 has changed and you have requested strict checking.
Причина: произошла смена ключа SSH и так как, на компьютере в файле ~/.ssh/known_hosts находится старый ключ, система не позволяет использовать сертификат в целях безопасности.
Решение: открываем файл с базой ключей:
Находим строчку с нашим удаленным компьютером, для которого получаем ошибку и удаляем ее.
Стандартным средством администрирования Linux является SSH.
SSH (Secure SHell) — сетевой протокол, позволяющий управлять операционной системой удалённо. Особенность протокола в том, что он шифрует все передаваемые внутри него данные. Алгоритмы шифрования можно выбирать.
Используя защищённый шифруемый канал связи можно посредством SSH передавать файлы с помощью утилиты SCP.
SCP (Secure CoPy) — утилита для копирования файлов между серверами по безопасному протоколу SSH.
Утилита в целях безопасности не имеет встроенной возможности указать в параметрах пароль пользователя, пароль приходится вводить вручную. Это мешает использованию SCP в скриптах для автоматизации передачи файлов между серверами. Админы в печали.
Возможность использования SCP в скриптах есть, для этого нужно отключить использование пароля в SSH соединениях.
Установка клиента OpenSSH
Есть много SSH-клиентов, бесплатных и платных, и OpenSSH является наиболее широко используемым клиентом. Он доступен на всех основных платформах, включая Linux, OpenBSD, Windows и macOS. Клиент OpenSSH предустановлен в большинстве дистрибутивов Linux по умолчанию, однако если в вашей системе не установлен клиент ssh, вы можете установить его с помощью диспетчера пакетов.
sudo apt install openssh-client
Подготовка
- Доступ к командной строке или окну терминала
- Пользователь с привилегиями sudo или root
- Локальный сервер и удаленный сервер
- Доступ по SSH к удаленному серверу через командную строку или окно терминала
Перед тем как начать проверьте существующие ключи SSH. Возможно, на вашем компьютере уже есть пара ключей SSH. Чтобы узнать, есть ли у вас в системе ключи SSH, выполните команду:
ls -al ~/.ssh/id_*.pub
Если в выводе указано, что таких файлов нет, переходите к следующему шагу, который показывает, как сгенерировать ключи SSH. Если они у вас есть, вы можете использовать существующие ключи, сделать их резервную копию и создать новую пару или перезаписать ее.
Копирование файла удаленно через SSH с помощью SCP
Вы можете безопасно копировать файлы по протоколу SSH с помощью инструмента SCP . Базовый синтаксис:
scp fileName user@remotehost:/home/username/destination
Например, чтобы скопировать файл sample3 на рабочий стол на удаленном сервере с проверкой имени пользователя, введите:
Данный пример приведен на разных UNIX-системах — копирование файла с FreeBSD на CentOS. Использовать его можно в различных средах.
Копирование данных утилитой scp выполняется по протоколу SSH. Таким образом, для беспарольного копирования необходимо разрешить подключение по SSH без пароля. Это делается с помощью сертификата безопасности.
Установка клиента OpenSSH
Есть много SSH-клиентов, бесплатных и платных, и OpenSSH является наиболее широко используемым клиентом. Он доступен на всех основных платформах, включая Linux, OpenBSD, Windows и macOS. Клиент OpenSSH предустановлен в большинстве дистрибутивов Linux по умолчанию, однако если в вашей системе не установлен клиент ssh, вы можете установить его с помощью диспетчера пакетов.
sudo apt install openssh-client
Копировать открытый ключ SSH
Чтобы использовать пару ключей для аутентификации SSH, вам необходимо скопировать открытый ключ на сервер. Ключ - это файл id_rsa.pub, ранее созданный с помощью утилиты генерации ключей SSH.
Чтобы скопировать ключ на сервер, запустите эту команду на клиенте:
Вы также можете указать имя пользователя, если не хотите использовать текущего пользователя.
Введите пароль для аутентификации, когда его спросят. После этого вам больше не нужно будет использовать пароль для подключения к тому же серверу.
Генерация ключей SSH с помощью SSH Keygen
Чтобы повысить безопасность соединений SSH, сгенерируйте пару ключей с помощью утилиты keygen. Пара состоит из открытого и закрытого ключей. Открытый ключ может быть общим, а закрытый ключ должен оставаться в безопасности.
Пары ключей SSH используются для автоматической аутентификации клиентов на серверах. Когда вы создаете пару ключей SSH, больше не нужно вводить пароль для доступа к серверу.
На терминале хост-машины используйте эту команду для создания пары ключей:
ssh-keygen -t rsa
Чтобы использовать настройки по умолчанию, нажмите Enter в ответ на запрос местоположения файла и парольной фразы.
Как получить доступ к удаленному серверу
Для подключения к удаленному компьютеру вам потребуется его IP-адрес или имя. Загрузите терминал или любой SSH-клиент и введите ssh, а затем IP-адрес:
Введите yes и нажмите Enter. Возможно, вам также потребуется ввести свой пароль.
Укажите имя пользователя для SSH-подключения
SSH использует текущего пользователя при доступе к удаленному серверу. Чтобы указать пользователя для SSH-соединения, выполните команду в следующем формате:
Примечание. Если вы столкнулись с ошибкой «Connection refused», обратитесь к нашему руководству , чтобы найти решения.
Перенос закрытого ключа на другой компьютер
В случае, если мы хотим использовать сгенерированный ключ на другом компьютере, переносим файлы id_rsa и id_rsa.pub. Например, у нас есть третий компьютер с Ubuntu (server3) и мы хотим теперь с него копировать файлы на CentOS без пароля. Заходим на компьютер с FreeBSD и копируем ключи:
* мы скопировали файлы id_rsa и id_rsa.pub на другой компьютер. Необходимо обратить внимание, что сертификаты должны находится к каталоге .ssh домашней паки того пользователя, от которого мы хотим подключаться.
Теперь с server3 можно копировать данные без пароля на server2:
scp /tmp/backup.tar.gz dmosk@server2:/backup/
Настраиваем SSH и SCP для работы без пароля
Вместо пароля будем использовать пару ключей шифрования, чтобы сервер-источник файла и сервер-получатель файла знали пользователя и не спрашивали пароль.
На сервере-источнике для генерации публичной и приватной пары ключей RSA под нужным нам пользователем выполняем команду:
- На вопрос "Enter passphrase (empty for no passphrase)" ничего не вводим, нажимаем Enter.
- На вопрос "Enter same passphrase again" ничего не вводим, нажимаем Enter.
Не сложно, правда? Нам говорят, что приватный ключ сохранён как /root/.ssh/id_rsa. Публичный ключ — /root/.ssh/id_rsa.pub. Если ключ требуется для другого пользователя, то папку ".ssh" можно скопировать нужному пользователю и сменить права. Публичный ключ нужно скопировать на удалённый сервер в файл ~/.ssh/authorized_keys. Скопировать можно здесь же вручную по SCP.
Проверьте, есть ли на сервере-получателе файл ~/.ssh/authorized_keys, если есть, то следует выполнить команды:
Если файла нет, то просто копируем публичный ключ:
При копировании попросят ввести пароль. Здесь root — имя пользователя на сервере-получателе, а freepbx — имя сервера-получателя.
При следующем входе на сервер-получатель с именем пользователя, для которого производилась настройка авторизации, пароль запрашиваться не будет.
Стандартным средством администрирования Linux является SSH .
SSH (Secure SHell) — сетевой протокол, позволяющий управлять операционной системой удалённо. Особенность протокола в том, что он шифрует все передаваемые внутри него данные. Алгоритмы шифрования можно выбирать.
Используя защищённый шифруемый канал связи можно посредством SSH передавать файлы с помощью утилиты SCP .
Утилита в целях безопасности не имеет встроенной возможности указать в параметрах пароль пользователя, пароль приходится вводить вручную. Это мешает использованию SCP в скриптах для автоматизации передачи файлов между серверами. Админы в печали.
Возможность использования SCP в скриптах есть, для этого нужно отключить использование пароля в SSH соединениях.
Настраиваем SSH и SCP для работы без пароля
Вместо пароля будем использовать пару ключей шифрования, чтобы сервер-источник файла и сервер-получатель файла знали пользователя и не спрашивали пароль.
На сервере-источнике для генерации публичной и приватной пары ключей RSA под нужным нам пользователем выполняем команду:
- На вопрос "Enter passphrase (empty for no passphrase)" ничего не вводим, нажимаем Enter.
- На вопрос "Enter same passphrase again" ничего не вводим, нажимаем Enter.
Не сложно, правда? Нам говорят, что приватный ключ сохранён как /root/.ssh/id_rsa. Публичный ключ — /root/.ssh/id_rsa.pub. Если ключ требуется для другого пользователя, то папку ".ssh" можно скопировать нужному пользователю и сменить права. Публичный ключ нужно скопировать на удалённый сервер в файл ~/.ssh/authorized_keys. Скопировать можно здесь же вручную по SCP.
Проверьте, есть ли на сервере-получателе файл ~/.ssh/authorized_keys, если есть, то следует выполнить команды:
scp root@freepbx:~/.ssh/authorized_keys ~/.ssh/authorized_keys_tmp
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys_tmp
scp ~/.ssh/authorized_keys_tmp root@freepbx:~/.ssh/authorized_keys
Если файла нет, то просто копируем публичный ключ:
При копировании попросят ввести пароль. Здесь root — имя пользователя на сервере-получателе, а freepbx — имя сервера-получателя.
При следующем входе на сервер-получатель с именем пользователя, для которого производилась настройка авторизации, пароль запрашиваться не будет.
Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.
SSH (Secure Shell) обеспечивает безопасное удаленное соединение между двумя системами. С помощью этого криптографического протокола вы можете управлять машинами, копировать или перемещать файлы на удаленном сервере через зашифрованные каналы.
Существует два способа входа в удаленную систему через SSH - с использованием аутентификации по паролю или аутентификации с открытым ключом (вход SSH без пароля).
В этом руководстве вы узнаете, как настроить и включить вход по SSH без пароля.
Шаг 1. Создайте пару ключей SSH
1. Первое, что вам нужно сделать, это сгенерировать пару ключей SSH на машине, на которой вы сейчас работаете.
В этом примере мы генерируем 4096-битную пару ключей. Мы также добавляем адрес электронной почты, но это необязательно. Команда такая:
ssh-keygen -t rsa -b 4096 -C "your_email@domain.com"
2. Затем введите место, где вы хотите сохранить ключи, или нажмите Enter, чтобы принять путь по умолчанию.
3. Также вам будет предложено установить кодовую фразу. Хотя это делает соединение еще более безопасным, оно может прерываться при настройке автоматизированных процессов. Поэтому вы можете ввести пароль или просто нажать Enter, чтобы пропустить этот шаг.
4. Затем в выводе сообщается, где хранятся идентификационный и открытый ключ, а также выдается отпечаток ключа.
Используйте другой номер порта для SSH-соединения
По умолчанию сервер SSH прослушивает соединение на порту 22. Если настройка порта в файле конфигурации SSH была изменена, вам необходимо указать порт. В противном случае вы получите такую ошибку:
Чтобы подключиться к удаленному хосту с настраиваемым номером порта SSH, используйте флаг -p. Например:
Генерация нового ключа и настройка беспарольного копирования
Для безопасной передачи данных между системами UNIX нужно сгенерировать закрытый и открытый ключи на одном компьютере и передать открытый на второй. Это делается по нижеописанному алгоритму.
На первом компьютере, с которого планируется копировать данные (FreeBSD) генерируем ключи:
ssh-keygen -t rsa
После нажатия Enter система попросит ввести параметры размещения ключа и пароль. Ничего не меняем, нажимая ввод и соглашаясь со значениями по умолчанию.
* в моем примере, генерация ключа проходила под учетной записью root и публичный ключ был создан по пути /root/.ssh/id_rsa.pub
Теперь скопируем публичный ключ на второй компьютер (CentOS):
scp /root/.ssh/id_rsa.pub dmosk@server2:/home/dmosk/.ssh/authorized_keys
* как видно, мы копируем сгенерированный ключ на компьютер server2, подключившись под учетной записью dmosk и размещаем его в домашнюю директорию этого пользователя под новым именем authorized_keys. Каталог /home/dmosk/.ssh должен быть создан на втором компьютере заранее командой mkdir.
После ввода команды система запросит пароль для учетной записи dmosk на компьютере server2 и скопирует ключ.
На втором сервере (CentOS или к которому будем подключаться и копировать на него данные) проверяем настройки ssh:
Мы должны найти строку:
Если данной строки нет или опция AuthorizedKeysFile имеет другое значение, нужно привести конфигурацию к данному виду. После перезапустить службу ssh:
systemctl restart sshd
Готово. Последующие команды SCP на копирование данных с первого компьютера на второй будут выполняться без запроса пароля, например:
scp /tmp/backup.tar.gz dmosk@server2:/backup/
Читайте также: