Что такое ssh/sftp и для чего он нужен?

Oписывается что такое ssh/sftp, для чего он нужен, как настроить клиент ssh для Linux, OSX, Unix, сгенерировать ключи и приготовить его к использованию.

Для управлением сервером на базе Linux на виртуальной машине VMware в связи с отсутствием физического терминала имеется две возможности – окошко виртуального терминала клиента VMware vSphere или с использованием безопасного соединения SSH.

При установке нашего шаблона виртуальной машины и конфигурировании сервера на его основе, мы использовали (или будем использовать) окошко терминала клиента VMware vSphere, поскольку на этом этапе альтернативы нет. Конечно, и в дальнейшем, через него работать можно, но очень неудобно – окошко маленькое, нет расширенных средств редактирования и копипаста, все надо набирать вручную, нельзя передать файл в виртуальную машину и т.д. Одним словом, сплошная тоска.

При помощи клиента ssh можно управлять сервером на основе нашего шаблона виртуальной машины (и не только), при этом окошко терминала может быть любого размера, в котором имеются все средства расширенного редактирования, включая копипаст из любых других приложений, работающих на компьютере, на котором запущен клиент. Например, можно копировать команды из этой статьи непосредственно в окошко терминала сервера. Программа sftp позволяет обеспечить безопасный обмен файлами с виртуальной машиной, на которой запущен наш сервер.

Из wikipedia: SSH – это сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов). SSH происходит от английского термина Secure Shell и переводиться как «безопасная оболочка».

Данный протокол сходен по функциональности с протоколами Telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая передаваемые пароли. SSH допускает выбор различных алгоритмов шифрования, позволяет безопасно передавать в незащищённой среде практически любой другой сетевой протокол.

Для работы по SSH нужен SSH-сервер и SSH-клиент. Сервер прослушивает соединения от клиентских машин и при установлении связи производит аутентификацию, после чего начинает обслуживание клиента. Клиент используется для входа на удаленную машину и выполнения команд. SSH-клиенты и SSH-серверы имеются для большинства сетевых операционных систем.

Или иными словами, при помощи протокола ssh можем организовать управление сервером с любого удаленного компьютера, передавать команды и данные, включая пароли и другую конфиденциальную информацию.

Как это сделать?

На Linux и MAC OS клиент ssh входит в базовую поставку операционной системы. На Windows необходимо установить клиент, как стороннее приложение. Как это сделать и как пользоваться таким приложением описано в публикациях “Клиент SSH для Windows Bitvise Tunnelier“, “SSH клиент для Windows PuTTY” и “PSFTP –  SFTP клиент PuTTY для Windows“.

Поэтому, начнем с запуска программы Терминал. Если дальнейшее выглядит непонятно, желательно прочитать статьи “Несколько слов о Linux” и “Команды Linux. Краткое описание“, так же можно просто повторить без ошибок указанные команды и получить неообходимый результат. Команды следуют за знаком «$» и написаны курсивом.

Набираем следующие команды (Можно копипастом), при этом имя (логин) текущего пользователя в примерах admin:

$  cd ~ переход в домашнюю папку пользователя (набираем cd ~).

$  ls -la .ssh проверка, есть ли дочерняя папка .ssh

Возможны два варианта ответа.

Первый:

ls: .ssh: No such file or directory нет такой папки – необходимо создать,

Набираем:

$  mkdir -p .ssh создание дочерней папки .ssh

$  chmod 0700 .ssh папка теперь доступна только для текущего пользователя (обязательно! Без этого клиент SSH откажется работать)

$  ls -la .ssh проверяем, что получилось

Должно быть все, как на рис. 1.

Что такое ssh/sftp и для чего он нужен?

Рис. 1. Создание папки ключей ssh

Теперь необходимо сгенерировать ключи для клиента ssh. Нам нужен хороший пароль для ключа, Который должен содержать не менее 8 знаков, включая маленькие и большие латинские буквы, цифры и некоторые знаки препинания, как -,+,#. Когда мне нужен пароль, я обычно открываю случайный англоязычный новостной сайт, выбираю некоторый абзац с цифрами и выписываю первые буквы нескольких слов перед и после цифр и разбавляю знаками препинания.

Как только пароль готов, набираем:

$  ssh-keygen -t rsa -C “your_email@example.com”

В кавычках Ваш адрес электронной почты. Программа спрашивает где мы хотим разместить ключи, (имя пользователя admin):

Enter file in which to save the key (/home/admin/.ssh/id_rsa): 

Путь правильный. Просто нажимаем Enter. Далее запрос на ввод пароля.

Enter passphrase (empty for no passphrase):

Вводим только что придуманный хороший пароль для ключа. Вводимые символы при вводе паролей не показываются. Далее, программа просит повторить ввод пароля еще раз.

Enter same passphrase again: 

Вводим и получаем ключи. В папке .ssh должны появиться закрытый ключ id_rsa и открытый ключ id_rsa.pub. Убедимся, что это так:

$  ls -la .ssh

Должно быть как на рис. 2.

Что такое ssh/sftp и для чего он нужен?

Рис. 2. Генерация ключей ssh

Второй, папка .ssh уже существует и ключи сгенерированы, то получим вывод как в нижней части рис. 2.

Теперь последний шаг – копируем открытый ключ в домашнюю папку пользователя, чтобы передать его на сервер:

$  cp .ssh/id_rsa.pub authorized_keys2

Файл authorized_keys2 необходимо перенести на USB-флешку. Он потребуется при установке сервера из нашего шаблона виртуальной машины. Программа-установщик разместит файл в необходимое место и даст нужные разрешения.

По умолчанию, сервер SSH установлен и запускается на любом серверном дистрибутиве Linux. При этом, сервер сконфигурирован так (по крайней мере, Red Hat/Cent OS), что для организации ssh соединения со стороны клиента достаточно правильно указать имя пользователя и пароль. Такая конфигурация делает сервер потенциально подверженным атакам brute force (наверное, грубой силы или подбора пароля). Если посмотреть логи сервера, то можно заметить, что кто-то постоянно пытается подобрать пароль для входа на сервер через ssh. Как минимум, логин одного пользователя root (суперпользователь) все знают. Хотя много попыток и с другими именами пользователя.

Поэтому, система на базе нашей виртуальной машины спроектирована так, регистрация через ssh разрешена только для пользователей, не обладающих правами пользователя root и открытый ключ которых размещен на сервере в файле authorized_keys2. При необходимости выполнять команды от имени суперпользователя root, необходимо использовать  команды sudo или su (см. “Команды Linux. Краткое описание“).

No comments yet.

Leave a Reply