Настройка SSH сервера
Настройка сервера на всех системах Linux сводится к редактированию конфигурационного файла ssh сервера. Данный пример файла от системы CentOS 7 но и у других тоже самое:
mcedit /etc/ssh/sshd_config = необходимые параметры с пояснениями = RSAAuthentication yes PubkeyAuthentication yes PubkeyAcceptedKeyTypes ssh-dss #Путь к файлу с публичными ключами AuthorizedKeysFile %h/.ssh/authorized_keys #Отключение возможности авторизации по паролю PasswordAuthentication no #Вид публичного ключа для авторизации PubkeyAcceptedKeyTypes ssh-rsa
Не советую сразу отключать подключение по паролю. Отключите его только после проверки авторизации по ключу!
Перезагрузим сервер SSH:
systemctl restart ssh
Настройка
Открываем конфигурационный файл rsync:
vi /etc/rsyncd.conf
И настраиваем его, примерно, следующим образом:
max connections = 10
exclude = lost+found/
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 *.rar *.7z *.mp3 *.jpg
path = /data1/
comment = Public folders
read only = yes
list = yes
auth users = rsync_d1
secrets file = /etc/rsyncd.scrt
hosts allow = localhost 192.168.0.15 192.168.0.20
hosts deny = *
uid = root
gid = root
path = /data2/
comment = Private folders
read only = yes
list = yes
auth users = rsync_d2, backup
secrets file = /etc/rsyncd.scrt
hosts allow = localhost 192.168.0.16 192.168.0.21
hosts deny = *
где первая группа параметров являются общими настройками:
- max connections — максимальное число одновременных подключений. Стоит задать, чтобы не перегружать сервер.
- exclude — папки, которые стоит исключить из синхронизации. В конкретном примере каталог для размещения восстановленных после проверки диска файлов.
- dont compress — указываем, какие файлы не нужно сжимать при отправке. Имеет смысл указать те, сжатие которых не даст результата, например, архивы, сжатые аудио и изображения.
а также каждый ресурс настраивается отдельно (в нашем примере data1 и data2):
- uid — пользователь, от которого будет выполнена синхронизация для конкретного ресурса.
- gid — группа, от которой будет выполнена синхронизация для конкретного ресурса.
- path — путь до ресурса, для которого выполняется синхронизация.
- comment — описание для удобства.
- read only — режим для чтения; позволяет защитить данные от удаления или изменения.
- list — разрешает или запрещает чтения содержимого каталога. Если запрещено (no), синхронизация может выполняться для конкретно перечисленных файлов.
- auth users — проверка подлинности, вводом логина с паролем.
- secrets file — файл, в котором размещены логин и пароль.
- hosts allow — перечисление хостов, с которых разрешено обращаться к rsync серверу.
- hosts deny — перечисление хостов, с которых запрещено обращаться к rsync серверу (в данном примере, со всех, кроме разрешенных).
Создаем файл для аутентификации:
vi /etc/rsyncd.scrt
rsync_d1:password1
rsync_d2:password2
backup:password3
* где rsync_d1:password1 — соответственно, пользователь rsync_d1 с паролем password1.
В целях безопасности, устанавливаем доступ только для владельца:
chmod 600 /etc/rsyncd.scrt
Перезапускаем сервис одной из команд:
systemctl restart rsyncd
/etc/init.d/rsync restart
service rsyncd restart
Добавляем порты в брандмауэр.
Firewalld:
firewall-cmd —permanent —add-port=873/tcp
firewall-cmd —permanent —add-port=22/tcp
firewall-cmd —reload
Iptables:
iptables -I INPUT 1 -p tcp —dport 873 -j ACCEPT
iptables -I INPUT 1 -p tcp —dport 22 -j ACCEPT
Синтаксис команды Rsync
Прежде чем перейти к использованию команды , давайте начнем с обзора основного синтаксиса.
Выражения утилиты имеют следующую форму:
- — Исходный каталог.
- — целевой каталог.
- — удаленное имя пользователя.
- — удаленное имя хоста или IP-адрес.
предоставляет ряд параметров, управляющих поведением команды. Наиболее широко используемые варианты:
- , , режим архива, эквивалент . Этот параметр указывает рекурсивно синхронизировать каталоги, передавать специальные и блочные устройства, сохранять символические ссылки, время модификации, группы, владение и разрешения.
- , . Эта опция заставляет сжимать данные при их отправке на конечный компьютер. Используйте эту опцию, только если подключение к удаленному компьютеру медленное.
- , что эквивалентно . Когда используется эта опция, показывает индикатор выполнения во время передачи и сохраняет частично переданные файлы. Это полезно при передаче больших файлов по медленным или нестабильным сетевым соединениям.
- . Когда используется эта опция, удаляет посторонние файлы из места назначения. Это полезно для зеркалирования.
- , . Используйте эту опцию, если вы хотите подавить сообщения, не связанные с ошибками.
- . Эта опция позволяет вам выбрать другую удаленную оболочку. По умолчанию настроен на использование ssh.
Прочее
Это бонус для развлечения. Шутка от разработчиков Linux, не несущая пользы.
cowsay — заставляет цифровую корову повторить текст, который вы ей передали. Как echo, только от лица коровы.
fortune | cowsay — награждает корову философским интеллектом и дает ей возможность делиться с вами умными цитатами.
cowsay -l — демонстрирует всех животных, которые могут с вами пообщаться в том случае, если вам почему-то не приглянулась корова.
sudo название менеджера пакетов install fortunes fortune-mod fortunes-min fortunes-ru — учит животных говорить на русском.
Здесь, пожалуй, и остановимся. Ключевые SSH-команды сервера мы рассмотрели. Их хватит для навигации и выполнения базовых операций. Остальное уже на ваших плечах и полностью зависит от проекта, над которым вы работаете.
Примеры использования rsync
Простая команда для синхронизации двух каталогов:
rsync -a —delete-after [email protected]::data_source /data_destination
Команда для резервного копирования:
rsync -ab —delete-after [email protected]::data_source /data_destination
Выполнение синхронизации по SSH:
rsync -a —delete-after -e «ssh -p 22» [email protected]:/data_source /data_destination
* по SSH запросы идут не через rsync server. В данном примере подключение будет выполнено по 22 порту, под учетной записью user.
Копирование файлов на удаленную машину:
rsync -a —delete-after /data_destination [email protected]::data_source
Синхронизация в обе стороны (запускаем две команды по очереди):
rsync -a —delete-after [email protected]::data_source /data_destination
rsync -a —delete-after /data_destination [email protected]::data_source
Синхронизация файлов по маске:
rsync -a —include=’*.txt’ —exclude=’*’ [email protected]::data_source /data_destination
* в этом примере будут синхронизированы только файлы с расширением txt.
Исключить каталог:
rsync -a —exclude=’folder/*’ [email protected]::data_source /data_destination
Почему это важно?
Аппаратные ключи заметно повышают уровень безопасности любого решения. Вообще говоря, и до релиза OpenSSH 8.2 существовали методы использования аппаратных ключей совместно с SSH. Например, можно использовать сервер PrivacyIdea, хранить приватные SSH-ключи на аппаратном токене, используя PIV или же OpenPGP. Неплохая сводка таких решений доступна на сайте Yubico.
Но в большинстве этих решений нужно было использовать стороннее ПО, а иногда еще и специальным образом настраивать аппаратные ключи. Во многих случаях процесс становился слишком сложным для массового применения.
Новый подход выглядит многообещающе: он поддерживается стандартно самим пакетом OpenSSH и очень напоминает обычную схему работы с SSH-ключами. Никакого дополнительного ПО, сложных конфигураций, преднастройки аппаратных ключей и прочего. Вы берете аппаратный ключ, генерируете SSH-ключ специального типа, добавляете публичный ключ на ваш сервер, как и обычно — и готово! Давайте посмотрим, как это работает в реальной жизни.
Параметры командной строки SSH
Давайте рассмотрим некоторые параметры, доступные с помощью команды ssh.
ssh -C
Используйте опцию -C с ssh для запроса сжатия всех данных, полученных или переданных с удаленного сервера. Синтаксис команды ниже
например
ssh -v
Параметр -v используется с командой ssh для отладки ssh-клиента. Ниже приведен синтаксис:
например:
Для отладки ssh-клиента используйте параметр -v
ssh -b
Опция -b используется для привязки IP-адреса к SSH-соединению. IP — адрес будет использоваться в качестве исходного адреса SSH-соединения. Это применяется, когда у клиента более двух IP-адресов, и вы можете не знать, какой IP-адрес используется для создания соединения с сервером SSH.
Например:
Команда свяжет IP-адрес с удаленным сервером. Мы можем проверить это, используя команду для проверки соединения.
Привязка IP-адреса к SSH-соединению
ssh -F
Параметр -F используется вместе с командой ssh для указания конфигурации для каждого пользователя. Файл конфигурации по умолчанию ~/. ssh/config.
Чтобы использовать определенный файл конфигурации, используйте параметр -F следующим образом.
Например:
ssh -L
Опция -L используется для переадресации локальных портов. Переадресация локальных портов позволяет нам перенаправлять трафик с нашего хоста в порт назначения через прокси-сервер.
Основной синтаксис для переадресации локальных портов такой.
Например выполните следующую команду для подключения к удаленному хосту на порт 3306, пользователя kali с IP 192.168.239.134 с локального хоста 192.168.239.133 на порту 3336.
Переадресация локальных портов SSH
ssh -R
Опция -R используется вместе с командой SSH для включения удаленной переадресации портов. Это означает, что вы можете перенаправить порт на удаленном сервере на порт локального компьютера, который затем будет перенаправлен на порт конечного компьютера.
Основной синтаксис для переадресации удаленных портов следующий.
Например:
Команда заставит ssh прослушивать ssh-сервер порт 3336 и перенаправлять весь трафик на порт 3000.
Синтаксис для переадресации удаленных портов SSH
ssh -C -D
Опция -D включает динамическую переадресацию портов. Обычный порт SOCKS-1001, однако можно использовать любой номер порта; тем не менее, некоторые программы будут работать только на порту 1001.
Основной синтаксис динамической пересылки выглядит следующим образом.
Например
Параметр -D указывает динамическую переадресацию портов на 1001 порт, а опция -C включает сжатие.
Динамическая переадресация портов SSH
ssh -X
Опция -X используется вместе с ssh для пересылки X11. Ниже приведен синтаксис для пересылки X11.
Используйте следующую команду, чтобы включить переадресацию X11 для пользователя kali с IP-адресом 192.168.239.134.
SSH -Y
Параметр -Y используется вместе с ssh для доверенной переадресации X11. Это означает, что удаленный X11 будет иметь полный доступ к исходному дисплею X11.
Используйте следующую команду, чтобы включить доверенную переадресацию. X11 для пользователя kali с IP-адресом 192.168.239.134.
Параметр -Y для доверенной переадресации X11 SSH
ssh -o
Параметр -o можно использовать с другими параметрами.
Например:
Если вы используете ssh -o «batchmode=yes», команда успешно выполнится на удаленной машине, если включено подключение без пароля, в противном случае команда вернет ошибку.
ssh -o «batchmode=yes»
Некоторые из наиболее важных параметров командной строки показаны в следующей таблице.
SSH Параметр (опция) | Описание |
-А | Позволяет перенаправлять соединение агента аутентификации. |
-а | Этот параметр отключает перенаправляемое соединение агента аутентификации. |
-b | Параметр используется для привязки адресов источников. |
-С | Этот параметр используется для сжатия данных. |
-c cipher_spec | Параметр выбирает спецификацию шифра для шифрования сеанса. |
-d | Эта опция отвечает за динамическую переадресацию портов на уровне приложений. |
-E log_file | Параметр добавляет журналы отладки в файл log_file вместо стандартной ошибки. |
-F config file | Этот параметр указывает файл конфигурации для каждого пользователя. |
-g | Эта опция позволяет удаленным хостам подключаться к локальным перенаправленным портам. |
-i identity_file | Опция считывает закрытый ключ для аутентификации с открытым ключом. |
-j | Параметр определяет директиву конфигурации ProxyJump. |
-l login_name | В этом параметре указывается пользователь для входа на удаленный компьютер. |
-p port | Параметр используется для указания порта для подключения к удаленному хосту. |
-q | Это тихий режим. |
-V | Подробный режим. |
-Х | Параметр позволяет переадресовать X11 |
-Y | Эта опция обеспечивает надежную переадресацию X11 |
Шаг 1 — Создание пары ключей
Первый шаг — создание пары ключей на клиентской системе (обычно на вашем компьютере):
По умолчанию последние версии будут создавать 3072-битную пару ключей RSA, которая достаточно безопасна для большинства сценариев использования (вы можете также добавить к этой команде флаг для получения 4096-битного ключа).
После ввода команды вы должны увидеть следующее:
Нажмите ENTER, чтобы сохранить пару ключей в подкаталог домашнего каталога или укажите альтернативный путь.
Если вы ранее создали пару ключей SSH, вы можете увидеть следующую строку:
Если вы решите перезаписать ключ на диске, вы больше не сможете выполнять аутентификацию с помощью предыдущего ключа. Будьте осторожны при выборе варианта yes, потому что этот процесс уничтожает ключи, и его нельзя отменить.
Затем вы должны увидеть следующую строку:
Здесь вы можете ввести защищенный пароль, что настоятельно рекомендуется сделать. Пароль добавляет дополнительный уровень безопасности для защиты от входа в систему несанкционированных пользователей.
Вывод затем должен выглядеть примерно следующим образом:
Теперь у вас есть открытый и закрытый ключи, которые вы можете использовать для аутентификации. Наследующем шаге вам нужно разместить открытый ключ на сервере, чтобы вы могли использовать аутентификацию на базе ключей SSH для входа в систему.
How to Transfer Files with Rsync over SSH
4 Апреля 2020
|
Терминал
В этом руководстве мы объясним, как копировать файлы rsync через SSH.
Когда дело доходит до передачи файлов между системами в сети, пользователи Linux и Unix имеют в своем распоряжении множество инструментов.
Наиболее популярными протоколами для передачи данных являются SSH и FTP . Хотя FTP очень популярен, всегда предпочитайте использовать SSH, так как это самый безопасный способ передачи ваших файлов.
Есть специализированные инструменты для передачи файлов через SSH , такие как и , но ни один из них не обладают всеми возможностями , которые предоставляют. может использоваться для зеркалирования данных, инкрементного резервного копирования, копирования файлов между системами и так далее.
Требования
-
Утилита должна быть установлена на обоих назначения и исходных систем. Если он не установлен, вы можете установить его, используя менеджер пакетов вашего дистрибутива:
Ubuntu и Debian:
CentOS и Fedora:
-
SSH доступ к удаленному компьютеру.
-
Пользователь, выполняющий команду, и удаленный пользователь SSH должны иметь соответствующие разрешения для чтения и записи файлов.
Использование для передачи файлов по SSH
С помощью вы можете передавать файлы и каталоги по SSH с и на удаленные серверы.
Общий синтаксис для передачи файлов с помощью следующего:
Где находится исходный каталог, целевой каталог — это удаленное имя пользователя SSH, а также удаленный хост SSH или IP-адрес.
Более новые версии rsync настроены на использование SSH в качестве удаленной оболочки по умолчанию, поэтому вы можете опустить эту опцию.
Например, для передачи одного файла из локальной системы в каталог на удаленной системе с IP-адресом вы должны выполнить:
Опция означает архивный режим , который синхронизирует каталоги рекурсивно, передача специального и блочные устройства, сохранить символические ссылки, время модификации, группы, права собственности и права доступа.
Если вы не установили пароль без пароля для удаленного компьютера, вам будет предложено ввести пароль пользователя.
Если файл существует на удаленном сервере, он будет перезаписан. Если вы хотите сохранить файл под другим именем, укажите новое имя:
Для передачи данных с удаленного на локальный компьютер используйте удаленное местоположение в качестве источника и локальное местоположение в качестве места назначения:
Передача каталогов по протоколу SSH аналогична передаче файлов.
Важно знать, что в исходных каталогах по-разному трактуется косая черта. Если исходный каталог имеет косую черту, будет копироваться только содержимое исходного каталога в целевой каталог
Если косая черта не указана, исходный каталог будет скопирован в целевой каталог.
Например, чтобы перенести локальный каталог в каталог на удаленной машине, вы должны набрать:
Используйте эту опцию, если вы хотите синхронизировать локальный и удаленный каталог. Будьте осторожны при использовании этой опции, поскольку она удалит файлы в целевом каталоге, если они не существуют в исходном каталоге.
Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию , укажите порт с помощью параметра. Например, если SSH прослушивает порт, вы должны использовать:
При передаче больших объемов данных рекомендуется запускать команду в сеансе экрана или использовать параметр, который указывает показывать индикатор выполнения во время передачи и сохранять частично переданные файлы:
Вы также можете прочитать , как исключить файлы или каталоги с .
Установление SSH-подключения к виртуальной машине с помощью клиента SSH
С помощью открытого ключа, развернутого на виртуальной машине Azure, и закрытого ключа в локальной системе установите SSH-подключение к виртуальной машине, используя ее IP-адрес или DNS-имя. Замените azureuser и myvm.westus.cloudapp.azure.com в приведенной команде, указав имя пользователя администратора и полное доменное имя (или IP-адрес).
Если при создании пары ключей вы указали парольную фразу, введите ее при появлении запроса во время входа в систему. (Сервер добавляется в папку . Если не изменять открытый ключ на виртуальной машине Azure или не удалять имя сервера из файла , запрос на подключение повторно не отображается.)
Если виртуальная машина использует политику доступа JIT, запросите доступ, прежде чем подключиться к виртуальной машине. Дополнительные сведения о политике JIT см. в статье Управление доступом к виртуальным машинам с помощью JIT-доступа.
Basic rsync + ssh
Let’s first ensure that rsync works correctly over ssh :
As for the options : -avz is for the verbose archive gzip compressed mode. This transfers your files and directories recursively, preserving most of their attributes (date, owner, group, and so on). –delete will make rsync to delete the files in the target directory if they don’t exist anymore in the source directory. All in all, you should end up with the target and source directories synchronized.
As we are specifying -e ssh, all the data are transfered over a secured ciphered SSH session.
Notice that it did ask for the password which is unsuitable for automation/scripting purposes. Let’s take care of that.
Базовое использование Rsync
Самый простой вариант использования — это копирование одного файла из одного в другое локальное расположение. Вот пример:
Пользователь, выполняющий команду, должен иметь разрешения на чтение в исходном местоположении и разрешения на запись в месте назначения.
Если пропустить имя файла из места назначения, файл будет скопирован с текущим именем. Если вы хотите сохранить файл под другим именем, укажите новое имя в целевой части:
Настоящая мощь проявляется в синхронизации каталогов. В приведенном ниже примере показано, как создать локальную резервную копию файлов веб-сайта:
Если целевой каталог не существует, создаст его.
Стоит отметить, что разному обрабатывает исходные каталоги с помощью завершающей косой черты ( ). Если исходный каталог имеет косую черту в конце, команда скопирует только содержимое каталога в целевой каталог. Если косая черта в конце опущена, копирует исходный каталог в целевой каталог.
Создание ключей SSH
Первый шаг для настройки аутентификации ключей SSH на сервере заключается в том, чтобы сгенерировать пару ключей SSH на локальном компьютере.
Для этого мы можем использовать специальную утилиту , которая входит в стандартный набор инструментов OpenSSH. По умолчанию она создает пару 2048-битных ключей RSA, что подходит для большинства сценариев использования.
Сгенерируйте на локальном компьютере пару ключей SSH, введя следующую команду:
Утилита предложит вам выбрать место размещения генерируемых ключей. По умолчанию ключи хранятся в каталоге внутри домашнего каталога вашего пользователя. Закрытый ключ будет иметь имя , а соответствующий открытый ключ будет иметь имя .
На этом этапе лучше всего использовать каталог по умолчанию. Это позволит вашему клиенту SSH автоматически находить ключи SSH при попытке аутентификации. Если вы хотите выбрать нестандартный каталог, введите его сейчас, а в ином случае нажмите ENTER, чтобы принять значения по умолчанию.
Если ранее вы сгенерировали пару ключей SSH, вы можете увидеть следующий диалог:
Если вы решите перезаписать ключ на диске, вы больше не сможете выполнять аутентификацию с помощью предыдущего ключа. Будьте осторожны при выборе варианта yes, поскольку этот процесс уничтожает ключи, и его нельзя отменить.
Далее вам будет предложено ввести парольную фразу для ключа. Это опциональная парольная фраза, которую можно использовать для шифрования файла закрытого ключа на диске.
Возможно вам будет интересно, в чем заключаются преимущества ключа SSH, если вам все равно нужна парольная фраза. Вот некоторые его преимущества:
- Закрытый ключ SSH (защищенная паролем часть) никогда не доступен через сеть. Парольная фраза используется только для расшифровки ключа на локальном компьютере. Это означает, что парольную фразу нельзя взломать через сеть методом прямого подбора.
- Закрытый ключ хранится в каталоге с ограниченным доступом. Клиент SSH не принимает закрытые ключи, хранящиеся в каталогах, доступ к которым не ограничен. У самого ключа могут быть ограниченные разрешения (чтение и запись доступны только владельцу). Это означает, что другие пользователи системы не смогут создать уязвимость.
- Для попытки взлома защищенного парольной фразой закрытого ключа SSH злоумышленнику уже необходим доступ к системе. Это означает, что у него уже должен быть доступ к учетной записи пользователя или учетной записи root. Если вы окажетесь в такой ситуации, парольная фраза может помешать злоумышленнику сразу же попасть на ваши другие серверы. Это может дать вам достаточно времени, чтобы создать и внедрить новую пару ключей SSH и запретить доступ с взломанным ключом.
Поскольку закрытый ключ недоступен через сеть и защищен системой разрешений, доступ к этому файлу будет только у вас (и у пользователя root). Парольная фраза служит дополнительным уровнем защиты на случай взлома одной из этих учетных записей.
Парольная фраза представляет собой необязательное дополнение. Если вы решите ее использовать, вам нужно будет вводить ее при каждом использовании соответствующего ключа (если вы не используете программный агент SSH, хранящий зашифрованный ключ). Мы рекомендуем использовать парольную фразу, но если вы не хотите ее задавать, вы можете просто нажать ENTER, чтобы пропустить этот диалог.
Теперь у вас есть открытый и закрытый ключи, которые вы можете использовать для аутентификации. Следующим шагом будет размещение открытого ключа на сервере, что позволит использовать аутентификацию SSH для входа в систему.
Ответ 3
Хотя правильный ответ на ваш вопрос — sshpass. Вы находитесь всего в трех простых шагах от решения:
Все следующие команды выполняются на стороне клиента, то есть на вашем компьютере.
Введите следующую команду, чтобы начать создание пары ключей rsa
# ssh-keygen
Когда появится сообщение «Введите файл, в котором нужно сохранить ключ», просто оставьте имя файла пустым, нажав Enter.
Когда терминал попросит вас ввести кодовую фразу, просто оставьте это поле пустым и нажмите Enter.
Затем скопируйте пару ключей на сервер с помощью одной простой команды
# ssh-copy-id userid@hostname
теперь вы можете войти в систему без пароля
# ssh userid@hostname
Настройка и подключения PuTTY
Теперь все что нам осталась это создать новый сеанс и настроить его подключения к SSH серверу по ключу.
Создаем новый сеанс пиши на IP Адрес к серверу.
Далее, мы выбираем меню категорию SSH и там выберем под категорию Auth
В поле Private key file for authentication загружаем наш приватный ключ.
Далее переходим обратно в раздел Session и сохраняем нашу сессию для того чтобы следующий раз не заполнять все эти поля.
Остаётся только проверить правильность аутентификации к SSH серверу по ключу. Запустите PuTTY и подключитесь к своему серверу. Если вы при создании, ключа заполнили поле Key Passphrase и Confirm Passphrase то вас запросит вести этот пароль. Если же всё настроено неправильно, то будет выдано сообщение об ошибке и предложено ввести пароль.
Как создать ключи SSH?
Сначала необходимо создать ключи ssh для аутентификации на локальном сервере. Для этого существует специальная утилита ssh-keygen, которая входит в набор утилит OpenSSH. По умолчанию она создает пару 2048 битных RSA ключей, которая подойдет не только для SSH, но и для большинства других ситуаций.
И так, генерация ключей ssh выполняется командой:
Утилита предложит вам выбрать расположение ключей. По умолчанию ключи располагаются в папке ~/.ssh/. Лучше ничего не менять, чтобы все работало по умолчанию и ключи автоматически подхватывались. Секретный ключ будет называться id_rsa, а публичный id_rsa.pub.
Затем утилита предложит ввести пароль для дополнительного шифрования ключа на диске. Его можно не указывать, если не хотите. Использование дополнительного шифрования имеет только один минус — необходимость вводить пароль, и несколько преимуществ:
- Пароль никогда не попадет в сеть, он используется только на локальной машине для расшифровки ключа. Это значит что перебор по паролю больше невозможен.
- Секретный ключ хранится в закрытом каталоге и у клиента ssh нет к нему доступа пока вы не введете пароль;
- Если злоумышленник хочет взломать аутентификацию по ключу SSH, ему понадобится доступ к вашей системе. И даже тогда ключевая фраза может стать серьезной помехой на его пути.
Но все же, это необязательное дополнение и если не хотите, то вы можете просто нажать Enter. Тогда доступ по ключу ssh будет выполняться автоматически и вам не нужно будет что-либо вводить.
Теперь у вас есть открытый и закрытый ключи SSH и вы можете использовать их для проверки подлинности. Дальше нам осталось разместить открытый ключ на удаленном сервере.
Работа с текстом
Парочка полезных команд для взаимодействия с любыми видами текстов на сервере через SSH.
cat — показывает текст из выбранного файла. В качестве аргумента передаем этой утилите текстовый документ, и cat выведет в консоль его содержимое. Синтаксис:
cat путь до файла, содержимое которого надо осмотреть
Чтобы взглянуть на содержимое файла timeweb.txt, который лежит на рабочем столе, напишем в терминал:
cat ~/Desktop/timeweb.txt
head — это «голова». Она работает по схожему с cat принципу. Отображает текст из файлов, где он имеется. Разница заключается в количестве отображаемого контента. Пользователь сам выбирает, сколько строчек текста вывести на экран, поставив аргумент -n. Команда head -n 4 ~/Documents/timeweb.txt покажет только первые четыре строки документа timeweb.txt из папки Documents.
tail — это «хвост». Работает, как head, но с противоположной стороны. Команда tail -n 8 ~/Documents/timeweb.txt покажет только первые восемь строк документа timeweb.txt из папки Documents.
touch — одна из множества команд для SSH, которую используют не по назначению. У нее весьма специфичная задача по изменению времени последнего открытия отдельных элементов файловой системы. Но ее быстро перепрофилировали чуть ли не в стандартный метод создания файлов. touch ~/Desktop/timeweb.html создаст HTML-документ с именем Timeweb на рабочем столе.
vi — используя с дополнительными аргументами, можно создавать новые текстовые файлы. Например vi /путь до директории, где нужно создать новый текстовый файл/. Или же редактировать уже существующие. Чтобы изменить содержимое какого-нибудь файла в домашней папке, надо ввести: vi /home/имя учетной записи/kakoy-to-tekstoviy-file.txt. Альтернативой vi может служить nano. Более современный и лояльный к новичкам редактор. К сожалению, может отсутствовать в системе по умолчанию и требовать установки.
wc путь до файла — показывает количество символов, количество строк и слов в выбранном текстовом документе.
grep — ищет конкретный кусочек текста в большом документе или распечатке из консоли. Чтобы дать понять, как он работает, покажу пример. Буду искать слово «немного» в файле timeweb.txt, лежащем у меня на рабочем столе. Сделаю это одной командой cat ~/Desktop/timeweb.txt | grep немного. Перед grep я использовал cat, чтобы вывести содержимое документа в консоль, а потом отфильтровать.
diff — сравнивает два файла и наглядно показывает строки, в которых обнаружились различия. Синтаксис: diff название первого файла название второго файла. Это может выглядеть так:
diff timeweb-1.html timeweb-2.html
Использование rsync для передачи файлов по SSH
С помощью rsyncвы можете передавать файлы и каталоги по SSH с и на удаленные серверы.
Общий синтаксис для передачи файлов с помощью rsync следующий:
Local to Remote: rsync ... -e ssh ... HOST:DEST Remote to Local: rsync ... -e ssh HOST:SRC...
Где SRC – исходный каталог, DEST – целевой каталог USER- это удаленное имя пользователя SSH, а HOST также удаленный хост SSH или IP-адрес.
Более новые версии rsync настроены на использование SSH в качестве удаленной оболочки по умолчанию, поэтому вы можете опустить опцию -e ssh.
Например, для передачи одного файла /opt/file.zip из локальной системы в каталог /var/www/ на удаленной системе с IP-адресом 11.11.11.11, вы должны выполнить:
rsync -a /opt/file.zip [email protected]:/var/www/
Опция -a означает архивный режим, который синхронизирует каталоги рекурсивно, передавать специальные и блочные устройства, сохранить символические ссылки, время модификации, группу, права собственности и право доступа.
Если вы не установили пароль “без пароля” для удаленного компьютера, вам будет предложено ввести пароль пользователя.
Если файл существует на удаленном сервере, он будет перезаписан. Если вы хотите сохранить файл под другим именем, укажите новое имя:
rsync -a /opt/file.zip [email protected]:/var/www/file2.zip
Для передачи данных с удаленного на локальный компьютер используйте удаленное местоположение в качестве источника и локальное местоположение в качестве места назначения:
rsync -a [email protected]:/var/www/file.zip /opt/
Передача каталогов rsync по протоколу SSH аналогична передаче файлов.
Важно знать, что rsync в исходных каталогах по-разному трактуется косая черта /. Если исходный каталог имеет косую черту, rsync будет копировать только содержимое исходного каталога в целевой каталог
Если косая черта не указана, исходный каталог будет скопирован в целевой каталог.
Например, чтобы перенести локальный каталог /opt/website/images/ в каталог /var/www/images/ на удаленном компьютере, вы должны набрать:
rsync -a /home/andreyex/images/ [email protected]:/var/www/images/
Используйте опцию –delete, если вы хотите синхронизировать локальный и удаленный каталог. Будьте осторожны при использовании этой опции, поскольку она удалит файлы в целевом каталоге, если они не существуют в исходном каталоге.
rsync -a --delete /home/andreyex/images/ [email protected]:/var/www/images/
Если SSH на удаленном хосте прослушивает порт, отличный от порта по умолчанию 22, укажите порт с помощью параметра -e. Например, если SSH прослушивает порт 3322, вы должны использовать:
rsync -a -e "ssh -p 3322" /home/andreyex/images/ [email protected]:/var/www/images/
При передаче больших объемов данных рекомендуется запускать команду rsync в сеансе экрана или использовать параметр -P, который указывает rsync показывать индикатор выполнения во время передачи и сохранять частично переданные файлы:
rsync -a -P /home/andreyex/images/ [email protected]:/var/www/images/