Files
omgauto-public-description/README.md

18 KiB
Raw Blame History

Подключение к SSH

Для работы с серверами используется терминал. Текстовый интерфейс, который он обеспечивает, может быть менее наглядным, чем графический, однако он обеспечивает гораздо более гибкий доступ к настройкам и менее требователен к ресурсам.

Откройте приложение Терминал (Finder - Программы - Утилиты). Должно открыться примерно такое окно:

Терминал

Здесь и далее, все команды в терминале будут обозначены символом $ в начале строки, например:

~$ ls
/srv$ pwd
$ echo "Hello, world!"

Здесь:

  • ~ и /srv - текущий каталог (~ - домашний каталог). Подразумевается, что запускать команду надо из этого каталога. Если эта часть не указана, то это команду можно выполнять в любом каталоге.
  • $ индикатор начала команды
  • ls и pwd - собственно команды который надо ввести, что эта команда терминалу; при этом в сам терминал его вводить не нужно. Для запуска команды достаточно будет просто нажать Enter.

Пример запуска первой команды из примера выше:

ls

Если же каталог в запущенном терминале не совпадает с каталогом, указанном до $, то необходимо изменить каталог, используя команду cd <целевой каталог>, например:

$ cd /srv

К сожалению, более постоянные картинки-примеры я привести не смогу ввиду отсутствия устройств от Apple...

1 Добавление синонима сервера

Добавьте в файл hosts следующую строку:

45.9.42.246 omgauto.ssh

В Mac OS этот файл располагается в /private/etc/hosts, редактировать его необходимо от имени администратора. Подробнее об изменении этого файла. Таким образом, создаётся синоним для IP адреса сервера (45.9.42.246), так что дальнейшие команды будут чуть более понятны.

2 Ключ шифрования

Откройте Терминал и введите следующую команду:

$ ssh-keygen -t ed25519

И нажмите Enter. Скрипт после этого, скорее всего, попросит ввести дополнительные данные: место сохранения и passphrase. Оставьте их значениями по умолчанию (пусть это и не рекомендовано), нажав на Enter ещё несколько раз. После этого ключ будет создан, а на консоль будет выведено примерно следующее сообщение:

Your identification has been saved in /Users/myname/.ssh/id_ed25519.
Your public key has been saved in /Users/myname/.ssh/id_ed25519.pub.
The key fingerprint is:
ae:89:72:0b:85:da:5a:f4:7c:1f:c2:43:fd:c6:44:38 myname@mymac.local

The key's randomart image is:

+--[ RSA 2048]----+
|+.o.             |
|ooE              |
|oo               |
|o.+..            |
|.+.+..  S .      |
|....+  o +       |
|  .o ....        |
|  .  .. .        |
|    ....         |
+-----------------+

Эта команда создала ключи шифрования. Этот ключ состоит из 2 частей: публичного (/Users/myname/.ssh/id_ed25519.pub) и приватного (/Users/myname/.ssh/id_ed25519). Эти ключи будут обеспечивать шифрование всего потока данных между вашим компьютером и сервером; а также позволит подключиться к серверу без дополнительного ввода пароля.

Никогда и никому не сообщайте приватный ключ!!! Он должен хранится только на вашем компьютере. Файл с приватным ключом начинается с -----BEGIN RSA PRIVATE KEY-----.

Передавать можно и нужно только публичный ключ. Что бы увидеть публичный ключ, введите

$ cat ~/.ssh/id_ed25519.pub

После нажатия на Enter, в консоль выведется примерно такое содержимое (конкретные символы будут, разумеется, другими):

ssh-ed25519 AAA...qUx user@localhost.local

Скопируйте эту строку, она понадобится позже.

3 Первое подключение к серверу

На сервере создано несколько аккаунтов:

  • root - это главный администраторский аккаунт сервера. Он имеет максимальные права... И поэтому использовать его как основной аккаунт крайне не рекомендуется. Его пароль я вышлю отдельно.
  • omgauto - это дополнительный пользовательский аккаунт, который я создал специально для вас. У него стоит временный пароль 321321, который нужно будет изменить при первой возможности (см. ниже).

Я настоятельно рекомендую использовать root только в случае крайней необходимости. Из-под omgauto тоже можно будет выполнить команды от имени администратора (sudo - Super-User DO), однако это потребует ввода пароля, что бы потенциально небезопасные команды не запускались "случайно".

Для подключения к серверу, в терминале нужно ввести:

$ ssh omgauto@omgauto.ssh

Здесь:

  • ssh - команда подключения к серверу по протоколу SSH
  • omgauto - имя пользователя
  • @ (читается как at) - разделитель между именем пользователя и сервером (user@server = user AT server)
  • omgauto.ssh - алиас IP сервера; здесь можно использовать просто IP адрес (omgauto@45.9.42.246), однако мне кажется это менее очевидным способом.

После ввода команды, сервер в первый раз запросит пароль. Не пугайтесь, если после нажатия на клавиши на экране ничего не будет меняться: так и задумано. Просто введите пароль (321321) и нажмите Enter. Если всё получилось, должно выйти что-то типа такого:

ssh

Заметка: ssh работает одинаково на всех ОС, так что тот факт, что я использую Windows, ни на что не влияет в данном примере. А после установки соединения с сервером различия и вовсе исчезают, так как теперь мы работаем в терминале сервера.

Сразу же после того, как подключение произошло, измените пароль. Для этого используйте команду

$ passwd

Эта команда попросит ввести сначала текущий пароль (321321), а затем дважды новый. Если пароль изменился успешно, появится сообщение passwd: password updated successfully.

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

$ nano ~/.ssh/authorized_keys

Откроется консольный редактор nano. Вставьте в него публичный ключ, который мы создали ранее: nano ~/.ssh/authorized_keys Для сохранения и выхода нажмите сначала F2 (появится запрос сохранения), затем Y (подтверждение сохранения), затем Enter (подтверждение стандартного места сохранения).

Для проверки, что всё сохранилось, можно ввести

$ cat ~/.ssh/authorized_keys

В консоли должен появиться введённый вами ключ.

Теперь, при следующем подключении, сервер не будет запрашивать пароль. Что бы это проверить, отключитесь от сервера, завершив SSH-сессию:

$ exit

а затем вновь подключитесь, используя

$ ssh omgauto@omgauto.ssh

Если сервер снова запроси пароль, то что-то произошло с сохранением публичного ключа. Но, скорее всего, в терминале появится вопрос, уточняющий, продолжать ли подключение к неизвестному (для системы) серверу: unknown_host Введите yes на запрос и нажмите Enter. Публичный ключ сервера теперь будет сохранён в системе, и следующее (третье) подключение к серверу произойдёт без дополнительных вопросов.

4 Работа с сервером

Базовые команды:

  • ls - Показать содержимое каталога (список названий файлов);
  • ll - Показать подробное содержимое каталога (это не стандартная команда, а сокращение);
  • cd - Сменить каталог (перейти в другой);
  • mkdir - Создать новую папку (каталог);
  • touch - Создать новый файл;
  • rm - Удалить файл;
  • cat - Показать содержимое файла;
  • pwd - Показать текущий каталог (полный путь к этому каталогу);
  • cp - Копировать файл/папку;
  • mv - Переместить файл/папку;
  • grep - Поиск конкретной фразы в файле;
  • find - Поиск файлов и папок;
  • vi и nano - Текстовые редакторы;
  • history - Показать 50 последних использованных команд;
  • clear - Очистить окно терминала.

Что бы узнать подробнее о команде, используйте руководство (man - manual):

$ man <команда>

Так, например

$ man ls

выдаст такое содержимое: man ls Используйте стрелки вверх и вниз для построчной прокрутки содержимого, кнопки PageUp и PageDown для более быстрой прокрутки и q для выхода из руководства.

5 Критические моменты: HTTPS

Для обеспечения работы HTTPS я использую бесплатные сертификаты от Lets Encrypt. Для автоматизации используется инструмент certbot. И на вашем сервере я настроил автоматическое обновление SSL-сертификата, используя этот инструмент.

Что бы проверить, что это обновление всё ещё запускается на фоне, достаточно запустить команду:

$ systemctl list-timers

и найти элемент с названием snap.certbot.renew.time: snap.certbot.renew.time Если в столбце PASSED указано значение меньше суток, то всё в порядке.

6 О Node и библиотеках

Ещё одна причина, из-за которой работа генератора PDF прерывалась на моём сервере, — это обновление Node.JS. Это набор утилит, который я использовал для эмуляции Chrome и последующей "печати" PDF оттуда. Это обновление каким-то образом сделало новую версию Node несовместимым с внутренней версией утилиты npm, которая используется для обновления пользовательских библиотек и запуска скриптов. Когда вы сообщили о проблеме, я быстро её починил, просто переустановив Node...

Суть в том, что так как на вашем сервере частые обновления не нужны (один из главных принципов системного администрирования: "Работает - не трогай!"), ломаться оно не будет. Так же, как не ломалось долгое время на хостинге, пока они не отключили на хостингах критическую библиотеку, которая не нужна для обычных сайтов, но критическая для Chrome.

Проверить версию этих библиотек можно используя команды:

$ node -v
$ npm -v

node/npm versions

Таблицу совместимости версий я не найду, потому что её не существует, но обновлять их всегда надо вместе.

7 Проверка ошибок работы скриптов

Что бы проверить, что всё работает и ничто нигде не застряло, можно посмотреть несколько место.

Для всех дальнейших проверок, потребуется перейти в папку, где находятся файлы проекта:

$ cd /srv/ampodbor.ru
/srv/ampodbor.ru$ ll

Вторая команда (ll) отобразит список файлов, что бы можно было проверить, что всё на месте:

список файлов

7.1 Проверка заданий конвертации

/srv/ampodbor.ru$ ll tasks

В этой папке не должно быть файлов, то есть вывод выглядит так:

пустая папка tasks

Если же отображается файл с названием типа task-1234.json, то есть необработанное задание. Это может произойти по 2 причинам:

  1. Задание просто не успело обработаться, так как запуск этих заданий происходит каждую минуту. Подождите минуту, и запустите команду ещё раз. Файл должен удалиться автоматически.
  2. Если же файл не удалился, то, скорее всего, его обработка закончилась ошибкой.

7.2 Проверка лога конвертации

/srv/ampodbor.ru$ tail cron.log

Если отображается что-то такое:

Ошибка

То что-то сломалось. Зовите меня, будут разбираться :)