Стандартом де факто, среди програм, используемых для администрирования Linux, FreeBSD и других UNIX серверов является SSH. Но, помимо предоставления доступа к командной оболочке удаленного сервера, SSH предоставляет возможность передавать по сети файлы, используя защищенный канал связи - при помощи утилиты SCP. Данная утилита позволит копировать файлы на удаленные хосты не только интерактивно, но и по рассписанию, при помощи скриптов, например при создании резервных копий, синхронизации папок и так далее.
По умолчанию, при установке связи с удаленным хостом, вам потребуется ввести имя пользователя и пароль, что не подходит при автоматическом соединении с удаленным сервером - здесь нужно чтоб сеанс связи устанавливался без необходимости вводить свои учетные данные. Мысли про запись логина и пароля в открытом виде следует отметать сразу, так как это является грубейшим нарушением всех политик безопасности и, если такое делать, то зачем нужен SCP? Можно просто исползовать FTP и не думать о безопасности. Для тех-же, кто хочет делать все по правильному, разработчики SSH реализовали возможность авторизации по открытому ключу, ну а как это сделать, давайте рассмотрим далее в статье.
Как копировать файлы при помощи SCP
Итак, для получения справки по работе с программой SCP выолните команду man scp
Среди прочих параметров, обратите внимание на параметры вида:
[[user@]host1:]file1 ... [[user@]host2:]file2
Где file1 - исходный_файл, а file2 - целевой_файл. Те части параметра, которые перечислены в квадратных скобках, можно опустить, то-есть команду SCP можно сократить до вида:
scp исходный_файл целевой_файл
Что будет равносильно копированию файла в пределах локального компьютера. Также, обратите внимание, что файлы можно копировать не только между локльным и удаленным хостом, но также и между двумя удаленными хостами.
Теперь давайте разберемся как правильно написать параметры подключения:
scp имя_пользователя@адрес_сервера1:/путь/к/файлу имя_пользователя@адрес_сервера2:/путь/к/файлу
Адрес сервера можно записать как IP адрес, так и в виде URL, путь к файлу можно запискать как относительный, так и полный:
scp ~/Downloads/file1.iso alex@profhelp.com.ua:~/Desktop/file1.iso
Как видите, вместо того, чтоб писать полный путь к своей домашней директории, я написал символ ~, что равносильно написанию полного пути к моей домашней директории /home/alex. К удаленному хосту 192.168.1.101 я также подключаюсь с учетной записью alex и размещаю файл на рабочем столе: ~/Desktop/file1.iso, что равносильно написанию /home/alex/Desktop/file1.iso. Так же, вы можете скопировать файлы с удаленного хоста на локальный компьютер:
scp alex@profhelp.com.ua:~/Desktop/file1.iso ~/Downloads/file1.iso
Для того, чтоб рекурсивно скопировать содержимое директории, следует использовать ключ -r, обратите внимание на нижний регистр, это имеет значение.
После того, как мы разобрались, как работает программа SCP, давайте настроим работу без необходимости вводить пароль.
Как настроить работу SSH и SCP для работы без пароля
В основе работы SSH заложено использование асиметричного шифрования, суть которого заключается в том, что имеется пара ключей, открытый и секретный, открытый ключ может использован для того, чтоб зашифровать данные, а закрытый расшифровать. Обратное действие навыполнимо. Для генерации крипто пары, выполните команду:
ssh-keygen –t rsa
На вопрос ввода ключевой фразы ничего не вводите, а нажмите энтер два раза(второй раз для подтверждения). В результате выполнения команды, в директории ~/.ssh/ появятся два файла:
- Секретный ключ id_rsa. Следует хранить его исключительно на локальном компьютере, подальше от посторонних глаз.
- Открытый ключ id_rsa.pub. Этот файл можно передавать кому угодно, это никак не скажется на вашей безопасноти.
Суть настройки авторизации по открытому ключу заключается в том, что на удаленном сервере, в файле ~/.ssh/authorized_keys должен находиться ваш открытый ключ. Для копирования открытого ключа на удаленный сервер выполните команду:
scp ~/.ssh/id_rsa.pub alex@profhelp.com.ua:~/.ssh/authorized_keys
В этот раз пришлось ввести пароль, но теперь при следующем входе на удаленный сервер с именем пользователя, для которого производилась настройка авторизации, пароль запрашиваться не будет.
Еще одно замечание. если на удаленном сервере уже имеется файл ~/.ssh/authorized_keys, то вместо выполнения команды, указанной выше, следует выполнить команды следующего вида:
scp alex@profhelp.com.ua:~/.ssh/authorized_keys ~/.ssh/authorized_keys_tmp
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys_tmp
scp ~/.ssh/authorized_keys_tmp alex@profhelp.com.ua:~/.ssh/authorized_keys
Выполнение этих команд добавит ваш открытый ключ в конец файла ~/.ssh/authorized_keys и снова выгрузит его на удаленный сервер.
There are 2 Comments
SSH
А разве в последней строке мы не "~/.ssh/authorized_keys_tmp" должны копировать на удаленный сервер?
спасибо! поправил :)
спасибо! поправил :)
Делись своим опытом и знаниями, ибо в могиле они тебе вряд-ли пригодятся.
Добавить комментарий