Изменил(а) на 'README.md'
This commit is contained in:
260
README.md
260
README.md
@@ -1,2 +1,260 @@
|
||||
# omgauto-public-description
|
||||
# Подключение к SSH
|
||||
|
||||
Для работы с серверами используется терминал. Текстовый интерфейс, который он обеспечивает, может быть менее наглядным,
|
||||
чем графический, однако он обеспечивает гораздо более гибкий доступ к настройкам и менее требователен к ресурсам.
|
||||
|
||||
Откройте приложение **Терминал** (Finder - Программы - Утилиты). Должно открыться примерно такое окно:
|
||||
|
||||

|
||||
|
||||
Здесь и далее, все команды в терминале будут обозначены символом `$` в начале строки, например:
|
||||
```shell
|
||||
~$ ls
|
||||
/srv$ pwd
|
||||
$ echo "Hello, world!"
|
||||
```
|
||||
Здесь:
|
||||
* `~` и `/srv` - текущий каталог (`~` - домашний каталог). Подразумевается, что запускать команду надо из этого
|
||||
каталога. Если эта часть не указана, то это команду можно выполнять в любом каталоге.
|
||||
* `$` индикатор начала команды
|
||||
* `ls` и `pwd` - собственно команды который надо ввести, что эта команда терминалу; при этом в сам терминал его вводить _не нужно_. Для
|
||||
запуска команды достаточно будет просто нажать `Enter`.
|
||||
|
||||
Пример запуска первой команды из примера выше:
|
||||
|
||||

|
||||
|
||||
Если же каталог в запущенном терминале не совпадает с каталогом, указанном до `$`, то необходимо изменить каталог,
|
||||
используя команду `cd <целевой каталог>`, например:
|
||||
```shell
|
||||
$ cd /srv
|
||||
```
|
||||
|
||||
К сожалению, более постоянные картинки-примеры я привести не смогу ввиду отсутствия устройств от Apple...
|
||||
|
||||
## 1 Добавление синонима сервера
|
||||
Добавьте в файл `hosts` следующую строку:
|
||||
```
|
||||
45.9.42.246 omgauto.ssh
|
||||
```
|
||||
В Mac OS этот файл располагается в `/private/etc/hosts`, редактировать его необходимо от имени администратора.
|
||||
[Подробнее об изменении этого файла](https://help.reg.ru/support/dns-servery-i-nastroyka-zony/rabota-s-dns-serverami/fayl-hosts-na-macos).
|
||||
Таким образом, создаётся синоним для IP адреса сервера (`45.9.42.246`), так что дальнейшие команды будут чуть более понятны.
|
||||
|
||||
## 2 Ключ шифрования
|
||||
Откройте Терминал и введите следующую команду:
|
||||
```shell
|
||||
$ ssh-keygen -t ed25519
|
||||
```
|
||||
И нажмите `Enter`. Скрипт после этого, скорее всего, попросит ввести дополнительные данные: место сохранения и
|
||||
_passphrase_. Оставьте их значениями по умолчанию (пусть это и [не рекомендовано](https://serverfault.com/questions/142959/is-it-okay-to-use-a-ssh-key-with-an-empty-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 .... |
|
||||
| . .. . |
|
||||
| .... |
|
||||
+-----------------+
|
||||
```
|
||||
Эта команда создала [ключи шифрования](https://ru.wikipedia.org/wiki/%D0%9A%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%81_%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D0%BC_%D0%BA%D0%BB%D1%8E%D1%87%D0%BE%D0%BC).
|
||||
Этот ключ состоит из 2 частей: публичного (`/Users/myname/.ssh/id_ed25519.pub`) и приватного (`/Users/myname/.ssh/id_ed25519`).
|
||||
Эти ключи будут обеспечивать шифрование всего потока данных между вашим компьютером и сервером; а также позволит
|
||||
подключиться к серверу без дополнительного ввода пароля.
|
||||
|
||||
**Никогда и никому не сообщайте приватный ключ**!!! Он должен хранится только на вашем компьютере. Файл с приватным ключом
|
||||
начинается с `-----BEGIN RSA PRIVATE KEY-----`.
|
||||
|
||||
Передавать можно и нужно только публичный ключ. Что бы увидеть публичный ключ, введите
|
||||
```shell
|
||||
$ cat ~/.ssh/id_ed25519.pub
|
||||
```
|
||||
После нажатия на `Enter`, в консоль выведется примерно такое содержимое (конкретные символы будут, разумеется, другими):
|
||||
```
|
||||
ssh-ed25519 AAA...qUx user@localhost.local
|
||||
```
|
||||
Скопируйте эту строку, она понадобится позже.
|
||||
|
||||
## 3 Первое подключение к серверу
|
||||
|
||||
На сервере создано несколько аккаунтов:
|
||||
* `root` - это главный администраторский аккаунт сервера. Он имеет максимальные права... И поэтому использовать его как
|
||||
основной аккаунт крайне не рекомендуется. Его пароль я вышлю отдельно.
|
||||
* `omgauto` - это дополнительный пользовательский аккаунт, который я создал специально для вас. У него стоит временный
|
||||
пароль `321321`, который нужно будет изменить при первой возможности (см. ниже).
|
||||
|
||||
Я настоятельно рекомендую использовать `root` только в случае крайней необходимости. Из-под `omgauto` тоже можно будет
|
||||
выполнить команды от имени администратора (`sudo` - Super-User DO), однако это потребует ввода пароля, что бы потенциально
|
||||
небезопасные команды не запускались "случайно".
|
||||
|
||||
Для подключения к серверу, в терминале нужно ввести:
|
||||
```shell
|
||||
$ 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` работает одинаково на всех ОС, так что тот факт, что я использую Windows, ни на что не влияет в данном примере.
|
||||
А после установки соединения с сервером различия и вовсе исчезают, так как теперь мы работаем в терминале сервера.
|
||||
|
||||
Сразу же после того, как подключение произошло, измените пароль. Для этого используйте команду
|
||||
```shell
|
||||
$ passwd
|
||||
```
|
||||
Эта команда попросит ввести сначала текущий пароль (`321321`), а затем дважды новый. Если пароль изменился успешно,
|
||||
появится сообщение `passwd: password updated successfully`.
|
||||
|
||||
Как было сказано выше, подключаться к серверу можно и без пароля. Для этого необходимо ввести следующую команду:
|
||||
```shell
|
||||
$ nano ~/.ssh/authorized_keys
|
||||
```
|
||||
Откроется консольный редактор `nano`. Вставьте в него публичный ключ, который мы создали ранее:
|
||||

|
||||
Для сохранения и выхода нажмите сначала `F2` (появится запрос сохранения), затем `Y` (подтверждение сохранения), затем
|
||||
`Enter` (подтверждение стандартного места сохранения).
|
||||
|
||||
Для проверки, что всё сохранилось, можно ввести
|
||||
```shell
|
||||
$ cat ~/.ssh/authorized_keys
|
||||
```
|
||||
В консоли должен появиться введённый вами ключ.
|
||||
|
||||
Теперь, при следующем подключении, сервер не будет запрашивать пароль. Что бы это проверить, отключитесь от сервера,
|
||||
завершив SSH-сессию:
|
||||
```shell
|
||||
$ exit
|
||||
```
|
||||
а затем вновь подключитесь, используя
|
||||
```shell
|
||||
$ ssh omgauto@omgauto.ssh
|
||||
```
|
||||
Если сервер снова запроси пароль, то что-то произошло с сохранением публичного ключа.
|
||||
Но, скорее всего, в терминале появится вопрос, уточняющий, продолжать ли подключение к неизвестному (для системы) серверу:
|
||||

|
||||
Введите `yes` на запрос и нажмите `Enter`. Публичный ключ сервера теперь будет сохранён в системе, и следующее (третье)
|
||||
подключение к серверу произойдёт без дополнительных вопросов.
|
||||
|
||||
## 4 Работа с сервером
|
||||
|
||||
Базовые команды:
|
||||
* `ls` - Показать содержимое каталога (список названий файлов);
|
||||
* `ll` - Показать подробное содержимое каталога (это не стандартная команда, а сокращение);
|
||||
* `cd` - Сменить каталог (перейти в другой);
|
||||
* `mkdir` - Создать новую папку (каталог);
|
||||
* `touch` - Создать новый файл;
|
||||
* `rm` - Удалить файл;
|
||||
* `cat` - Показать содержимое файла;
|
||||
* `pwd` - Показать текущий каталог (полный путь к этому каталогу);
|
||||
* `cp` - Копировать файл/папку;
|
||||
* `mv` - Переместить файл/папку;
|
||||
* `grep` - Поиск конкретной фразы в файле;
|
||||
* `find` - Поиск файлов и папок;
|
||||
* `vi` и `nano` - Текстовые редакторы;
|
||||
* `history` - Показать 50 последних использованных команд;
|
||||
* `clear` - Очистить окно терминала.
|
||||
|
||||
Что бы узнать подробнее о команде, используйте руководство (`man` - **man**ual):
|
||||
```shell
|
||||
$ man <команда>
|
||||
```
|
||||
Так, например
|
||||
```shell
|
||||
$ man ls
|
||||
```
|
||||
выдаст такое содержимое:
|
||||

|
||||
Используйте стрелки вверх и вниз для построчной прокрутки содержимого, кнопки `PageUp` и `PageDown` для более быстрой
|
||||
прокрутки и `q` для выхода из руководства.
|
||||
|
||||
## 5 Критические моменты: HTTPS
|
||||
|
||||
Для обеспечения работы HTTPS я использую бесплатные сертификаты от [Let’s Encrypt](https://letsencrypt.org). Для
|
||||
автоматизации используется инструмент `certbot`. И на вашем сервере я настроил автоматическое обновление
|
||||
SSL-сертификата, используя этот инструмент.
|
||||
|
||||
Что бы проверить, что это обновление всё ещё запускается на фоне, достаточно запустить команду:
|
||||
```shell
|
||||
$ systemctl list-timers
|
||||
```
|
||||
и найти элемент с названием `snap.certbot.renew.time`:
|
||||

|
||||
Если в столбце `PASSED` указано значение меньше суток, то всё в порядке.
|
||||
|
||||
## 6 О Node и библиотеках
|
||||
|
||||
Ещё одна причина, из-за которой работа генератора PDF прерывалась на моём сервере, — это обновление Node.JS. Это
|
||||
набор утилит, который я использовал для эмуляции Chrome и последующей "печати" PDF оттуда. Это обновление каким-то
|
||||
образом сделало новую версию Node несовместимым с внутренней версией утилиты `npm`, которая используется для
|
||||
обновления пользовательских библиотек и запуска скриптов. Когда вы сообщили о проблеме, я быстро её починил, просто
|
||||
переустановив Node...
|
||||
|
||||
Суть в том, что так как на вашем сервере частые обновления не нужны (один из главных принципов системного
|
||||
администрирования: "Работает - не трогай!"), ломаться оно не будет. Так же, как не ломалось долгое время на хостинге,
|
||||
пока они не отключили на хостингах критическую библиотеку, которая не нужна для обычных сайтов, но критическая для
|
||||
Chrome.
|
||||
|
||||
Проверить версию этих библиотек можно используя команды:
|
||||
```shell
|
||||
$ node -v
|
||||
$ npm -v
|
||||
```
|
||||

|
||||
|
||||
Таблицу совместимости версий я не найду, потому что её не существует, но обновлять их всегда надо вместе.
|
||||
|
||||
## 7 Проверка ошибок работы скриптов
|
||||
|
||||
Что бы проверить, что всё работает и ничто нигде не застряло, можно посмотреть несколько место.
|
||||
|
||||
Для всех дальнейших проверок, потребуется перейти в папку, где находятся файлы проекта:
|
||||
```shell
|
||||
$ cd /srv/ampodbor.ru
|
||||
/srv/ampodbor.ru$ ll
|
||||
```
|
||||
Вторая команда (`ll`) отобразит список файлов, что бы можно было проверить, что всё на месте:
|
||||
|
||||

|
||||
|
||||
### 7.1 Проверка заданий конвертации
|
||||
```shell
|
||||
/srv/ampodbor.ru$ ll tasks
|
||||
```
|
||||
В этой папке не должно быть файлов, то есть вывод выглядит так:
|
||||

|
||||
|
||||
Если же отображается файл с названием типа `task-1234.json`, то есть необработанное задание. Это может произойти по 2
|
||||
причинам:
|
||||
1. Задание просто не успело обработаться, так как запуск этих заданий происходит каждую минуту. Подождите минуту, и
|
||||
запустите команду ещё раз. Файл должен удалиться автоматически.
|
||||
2. Если же файл не удалился, то, скорее всего, его обработка закончилась ошибкой.
|
||||
|
||||
### 7.2 Проверка лога конвертации
|
||||
```shell
|
||||
/srv/ampodbor.ru$ tail cron.log
|
||||
```
|
||||
|
||||
Если отображается что-то такое:
|
||||

|
||||
То что-то сломалось. Зовите меня, будут разбираться :)
|
||||
Reference in New Issue
Block a user