Сетевой дневник одного программиста

Персональный блог Константина Огородова

SSH и SFTP

В большинстве статей посвящённых Linux так или иначе упоминается об использовании терминала для выполнения команд. Получить доступ к терминалу можно разными способами, но чаще всего для этих целей используется SSH (Secure Shell). TrueNAS SCALE не исключение, но по умолчанию служба выключена и поэтому сперва её нужно включить через меню System Settings -> Services, а также не забыть поставить флаг Start Automatically. Ещё отмечу, что авторизация по паролю для пользователя root по умолчанию запрещена из соображений безопасности. Если SSH используется исключительно внутри домашней сети, то можно совершенно спокойно разрешить доступ root’а по паролю через настройки сервиса (Log in as Root with Password). Сразу после этого можно запускать командную строку Windows и подключаться к серверу при помощи команды ssh root@<адрес сервера>. А что дальше..? Хм-м-м, хороший вопрос. Некоторое время я использовал SSH для перемещения по файловой системе удалённого сервера с помощью команд cd и ls, прямо как во временя доминирования DOS. Вдоволь наигравшись я пришёл к выводу, что такой подход не удобен и не информативен, поэтому нужно искать другие варианты взаимодействия с удалённой файловой системой, тем более что в разных статьях упоминалась, что SSH поддерживает туннелирование и SFTP (SSH File Transfer Protocol). После недолгих поисков я наткнулся на совершенно замечательную программу WinSCP, Эта программа позволяет получить доступ к удалённой файловой системе через интерфейс аналогичный проводнику Windows, или даже двум проводникам, если выбрать двухпанельный режим. Теперь все операции с файлами и каталогами на удалённом сервере происходят также, как если бы это был просто другой локальный диск компьютера. Замечательно!

Вдохновившись таким успехом я решил отказаться от авторизации root’а по паролю и перейти на авторизацию по ключу, тем более что необходимые инструменты и сам ключ у меня уже есть и используются для работы с GitHub и BitBucket. Однако не буду делать на это «скидку» и опишу весь процесс с самого начала. А начинать нужно с PuTTY — набора утилит для создания и управления ключами, а также клиентов работающих с протоколами SSH, SFTP, SCP, Telnet. После установки нужно создать пару ключей (с паролем) при помощи утилиты PuTTYgen и сохранить оба ключа в <каталог пользователя>.ssh . Имена по умолчанию в случае использования RSA: id_rsa.ppk для приватного ключа и id_rsa.pub для публичного. Приватный ключ, как следует из названия, никому и никогда не передаётся ни под каким предлогом. А вот публичный напротив можно и нужно вставлять в соответствующие поля на серверах для авторизации. Однако тут есть один подвох: вставлять нужно не содержимое файла id_rsa.pub, а значение поля Public key for passing into Open SSH authorized keys file из интерфейса PuTTYgen. В SCALE публичный ключик нужно поместить в поле SSH Public Key окна редактирования пользователя (root).

Далее переходим к использованию ключей: для этого используется утилита Pageant. Запустить можно из меню «Пуск», либо дважды щёлкнув по файлу приватного ключа. Программа запуститься и появиться значок в системном лотке. Причём если запуск был через пуск — список ключей будет пуст, а если запуск был через файл ключа — будет запущена процедура добавления ключа в Pageant и появиться окно ввода пароля. Ещё один вариант запуска — создать ярлык на рабочем столе для запуска программы, в котором через пробел указать путь до файла ключа. Это предпочтительный вариант, т.к. работает гораздо быстрее добавления ключа через контекстное меню Pageant.
Более подробно про PuTTY можно почитать на официальном сайте, либо на русскоязычном сайте, либо на хабре, либо в документации WinSCP

Дело осталось за малым: скачать, установить и запустить WinSCP. После запуска откроется окно «Вход» в котором нужно указать имя хоста и имя пользователя, а для удобства ещё и сохранить, указав имя соединения. При нажатии кнопки «Войти» программа попытается авторизоваться на сервере запросив при этом ключ у Pageant, т.е. во время подключения Pageant должен быть запущен и ключик должен быть загружен. В противном случае WinSCP выдаст ошибку авторизации.
Отмечу также, что WinSCP может работать и без Pageant’а, если в настройках подключения указать путь до приватного ключа. Однако использование Pageant’а даёт ряд преимуществ:

  1. открывать ключ паролем достаточно лишь один раз при загрузке ключа и с этого момента до закрытия Pageant’а ключ будет доступен для использования.
  2. Множество программ одновременно могут использовать ключи Pageant’а, Например открыв соединение в WinSCP для работы с файловой системой, я могу через панель управления или меню WinSCP запустить терминал или сессию PuTTY до того же сервера и с тем же именем пользователя. Т.е. нет необходимости лишних телодвижений по вводу адресов, пользователей, паролей — один раз ввёл и работай хоть с файловой системой, хоть с терминалом.

Напоследок осталось сказать, что SSH позволяет делать намного больше, чем передавать файлы и выполнять команды на сервере, однако именно эта функциональность используется чаще всего. И хотя я не фанат терминала (и не противник), только он позволяет делать так вещи как отладка Docker-контейнеров под управлением Kubernetes… но это совсем другая история 🙂

SSH и SFTP

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх