Описание тега xkill
У меня есть несколько ноутбуков сисадмин и кластер серверов. Я управляющей / вращая ключи SSH на сервера из скрипта (назовем его rotate_keys.sh
), который будет работать на любой сисадмин ноутбуков.
Я установила правило, что каждый сервер будет сохранять не более 1 (Последний) ключ SSH данного ноутбука сисадмина.
В СШ ключи хранятся в файле authorized_keys
, которое принимает форму:
пользователь ключ1@устройство1-хоста
пользователь ключ2@устройства2-хоста
пользователь ключ3@устройства3-хоста
У каждого сервера есть скрипт (назовем его update_keys.sh
), что при казни через SSH, будет удалить все ключи, связанные с машиной, который подключен к нему. Я (попытаться) сделать это, удалив все строки, содержащие имя данного клиента.
СЕПГ -я "/$client_hostname/д" authorized_keys
На сервере, я хватаю имя клиента, выполняя обратный поиск DNS на IP-адрес из переменной окружения $SSH_CONNECTION
(который находится в начале SSH сессии).
client_ip=$(Эхо $SSH_CONNECTION | у awk '{печати $1}')
client_hostname=$(команда nslookup $client_ip \
| хвост -2 \
| глава -1 \
| у awk '{печати 4$}')
Возвращает имя хоста в формате:
устройства-хоста.маршрутизатор-хост.
За неимением лучшего термина, это дает мне "полное имя".
Однако хосты в authorized_keys
опускает имя маршрутизатора (подсети), что эти устройства подключены. Они просто появляются как:
устройства-хоста
Поэтому, когда я выполните следующую команду Удалить, ничего не соответствует.
СЕПГ -я "/$client_hostname/д" authorized_keys
Есть ли способ, чтобы либо силой демон SSH к записи "полное" имя хоста. Или есть инструмент для поиска DNS, который будет только дать мне имя устройства, за вычетом узлов, маршрутизаторов, подключенных к?
Я предпочел бы один из указанных выше двух подходов, чем отключение обратного DNS В SSH-демон (на серверах), потому что это потребует, что мои ноутбуки sysadmin имеют статические IP-адреса.