Подключение к SSH
Для работы с серверами используется терминал. Текстовый интерфейс, который он обеспечивает, может быть менее наглядным, чем графический, однако он обеспечивает гораздо более гибкий доступ к настройкам и менее требователен к ресурсам.
Откройте приложение Терминал (Finder - Программы - Утилиты). Должно открыться примерно такое окно:
Здесь и далее, все команды в терминале будут обозначены символом $ в начале строки, например:
~$ ls
/srv$ pwd
$ echo "Hello, world!"
Здесь:
~и/srv- текущий каталог (~- домашний каталог). Подразумевается, что запускать команду надо из этого каталога. Если эта часть не указана, то это команду можно выполнять в любом каталоге.$индикатор начала командыlsиpwd- собственно команды который надо ввести, что эта команда терминалу; при этом в сам терминал его вводить не нужно. Для запуска команды достаточно будет просто нажатьEnter.
Пример запуска первой команды из примера выше:
Если же каталог в запущенном терминале не совпадает с каталогом, указанном до $, то необходимо изменить каталог,
используя команду 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- команда подключения к серверу по протоколу SSHomgauto- имя пользователя@(читается какat) - разделитель между именем пользователя и сервером (user@server=user AT server)omgauto.ssh- алиас IP сервера; здесь можно использовать просто IP адрес (omgauto@45.9.42.246), однако мне кажется это менее очевидным способом.
После ввода команды, сервер в первый раз запросит пароль. Не пугайтесь, если после нажатия на клавиши на экране ничего не
будет меняться: так и задумано. Просто введите пароль (321321) и нажмите Enter. Если всё получилось, должно выйти что-то
типа такого:
Заметка: ssh работает одинаково на всех ОС, так что тот факт, что я использую Windows, ни на что не влияет в данном примере.
А после установки соединения с сервером различия и вовсе исчезают, так как теперь мы работаем в терминале сервера.
Сразу же после того, как подключение произошло, измените пароль. Для этого используйте команду
$ passwd
Эта команда попросит ввести сначала текущий пароль (321321), а затем дважды новый. Если пароль изменился успешно,
появится сообщение passwd: password updated successfully.
Как было сказано выше, подключаться к серверу можно и без пароля. Для этого необходимо ввести следующую команду:
$ nano ~/.ssh/authorized_keys
Откроется консольный редактор nano. Вставьте в него публичный ключ, который мы создали ранее:
Для сохранения и выхода нажмите сначала F2 (появится запрос сохранения), затем Y (подтверждение сохранения), затем
Enter (подтверждение стандартного места сохранения).
Для проверки, что всё сохранилось, можно ввести
$ cat ~/.ssh/authorized_keys
В консоли должен появиться введённый вами ключ.
Теперь, при следующем подключении, сервер не будет запрашивать пароль. Что бы это проверить, отключитесь от сервера, завершив SSH-сессию:
$ exit
а затем вновь подключитесь, используя
$ 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 - manual):
$ man <команда>
Так, например
$ man ls
выдаст такое содержимое:
Используйте стрелки вверх и вниз для построчной прокрутки содержимого, кнопки PageUp и PageDown для более быстрой
прокрутки и q для выхода из руководства.
5 Критические моменты: HTTPS
Для обеспечения работы HTTPS я использую бесплатные сертификаты от Let’s Encrypt. Для
автоматизации используется инструмент certbot. И на вашем сервере я настроил автоматическое обновление
SSL-сертификата, используя этот инструмент.
Что бы проверить, что это обновление всё ещё запускается на фоне, достаточно запустить команду:
$ systemctl list-timers
и найти элемент с названием snap.certbot.renew.time:
Если в столбце PASSED указано значение меньше суток, то всё в порядке.
6 О Node и библиотеках
Ещё одна причина, из-за которой работа генератора PDF прерывалась на моём сервере, — это обновление Node.JS. Это
набор утилит, который я использовал для эмуляции Chrome и последующей "печати" PDF оттуда. Это обновление каким-то
образом сделало новую версию Node несовместимым с внутренней версией утилиты npm, которая используется для
обновления пользовательских библиотек и запуска скриптов. Когда вы сообщили о проблеме, я быстро её починил, просто
переустановив Node...
Суть в том, что так как на вашем сервере частые обновления не нужны (один из главных принципов системного администрирования: "Работает - не трогай!"), ломаться оно не будет. Так же, как не ломалось долгое время на хостинге, пока они не отключили на хостингах критическую библиотеку, которая не нужна для обычных сайтов, но критическая для Chrome.
Проверить версию этих библиотек можно используя команды:
$ node -v
$ npm -v
Таблицу совместимости версий я не найду, потому что её не существует, но обновлять их всегда надо вместе.
7 Проверка ошибок работы скриптов
Что бы проверить, что всё работает и ничто нигде не застряло, можно посмотреть несколько место.
Для всех дальнейших проверок, потребуется перейти в папку, где находятся файлы проекта:
$ cd /srv/ampodbor.ru
/srv/ampodbor.ru$ ll
Вторая команда (ll) отобразит список файлов, что бы можно было проверить, что всё на месте:
7.1 Проверка заданий конвертации
/srv/ampodbor.ru$ ll tasks
В этой папке не должно быть файлов, то есть вывод выглядит так:
Если же отображается файл с названием типа task-1234.json, то есть необработанное задание. Это может произойти по 2
причинам:
- Задание просто не успело обработаться, так как запуск этих заданий происходит каждую минуту. Подождите минуту, и запустите команду ещё раз. Файл должен удалиться автоматически.
- Если же файл не удалился, то, скорее всего, его обработка закончилась ошибкой.
7.2 Проверка лога конвертации
/srv/ampodbor.ru$ tail cron.log
Если отображается что-то такое:
То что-то сломалось. Зовите меня, будут разбираться :)






