CentOS: пользователь с отдельным файлом открытого ключа

Очевидно, что если система будет работать несколько дней, я не смогу получить эту информацию. Я правильно понимаю здесь?

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

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

dmesg > /var/run/dmesg.boot

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

Вам просто нужно написать службу systemd, которая будет делать то же самое. Используйте оболочку для перенаправления

ExecStart=/bin/sh -c "exec dmesg > /run/dmesg.boot"

или что-то вроде redirfd Лорана Берко или fdredir

ExecStart=/usr/local/bin/fdredir --write 1 /run/dmesg.boot dmesg

набора инструментов nosh journalctl -k , если вы хотите сделать снимок журнала systemd, а не только журнала ядра, и сделать его службой Type = oneshot . Либо сделайте его желательным для multi-user.target , либо сделайте его службой DefaultDependencies = no , которая требуется для basic.target .Обратите внимание, что его не нужно заказывать после монтирования локальной файловой системы (например, local-fs.target ). Такой порядок необходим для FreeBSD и OpenBSD, потому что / var / run может быть дисковой файловой системой с ними. В операционных системах systemd / run - это «файловая система API», которая создается при начальной загрузке перед любыми службами.

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

Однако это намного сложнее настроить в мире systemd чем oneshot, который пишет /run/dmesg.boot . Однако это просто в мире семейства daemontools. Это тривиальное упражнение в использовании таких инструментов, как fifo-listen и klog-read или socklog . Передача вывода через демон журнала, который записывает в частный, надежно ограниченный по размеру, автоматически вращающийся каталог журнала, входит в стандартную комплектацию с daemontools / runit / s6 / nosh / perp-managed service.)

2
06.12.2018, 01:50
1 ответ

Все это выглядит примерно так, как должно быть,... единственное, что вы не упомянули, это то, есть ли у машины, с которой вы пытаетесь подключиться, закрытый ключ? Возможно, он не сохранен там, где должен быть (например, ~/.ssh/id_rsa) - если это не так, то для подключения необходимо использовать следующую команду:

ssh -i <path to identity file> <username>@<hostname>

Также рекомендую вы не копируете идентификаторы «вручную», если вам это действительно не нужно и вы не знаете, что делаете, а просто используете ssh-команды, которые облегчают вам это:

ssh-keygen
ssh-copy-id <username>@<hostname>

Вот и все. Это сначала создаст новый файл идентификации, а затем скопирует его на хост. Если у вас уже где-то есть файл идентификации, вы, конечно, также можете использовать флаг -i <путь к файлу идентификации> с ssh-copy-id.

РЕДАКТИРОВАТЬ: Я только что заметил, что вы упомянули, что подключаетесь к Putty - это немного отличается, и у шпатлевки есть собственный механизм для этого, генератор ключей PuTTY.

Сгенерируйте и сохраните закрытый и открытый ключи: закрытый — это id_rsa из нашего предыдущего примера, который остается на клиентской машине, публичный — это id_rsa.pub, который необходимо скопировать в ~/.ssh/authorized_keys на сервере.

Сделав это, вам нужно добавить закрытый ключ на вкладке Connection/SSH/Auth для сеанса, который вы используете.

1
27.01.2020, 22:18

Теги

Похожие вопросы