Ответы пользователя по тегу SSH
  • Как правильно настроить оповещение о подключении пользователя root?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    статья по которой вы делаете 10-тилетней давности и за это время возможно уже что-то изменилось в механике взаимодействия.
    у меня, например, не работает от рута не то что воспроизведение музыки, а и сам notify-send что пришлось изголятся по типу такого:
    sudo -u \#$(id -u ЮЗЕР) DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u ЮЗЕР)/bus notify-send 'Hello world!' 'This is an example notification.'

    где за основу взята информация с арчвики

    чтобы получить аналогичную возможность описанную в статье пришлось немного переработать взаимодействие для большей универсальности.
    /etc/ssh/sshrc
    pathfifo=/tmp/sshd_alarm/fifo; [[ -p $pathfifo ]] && echo $USER $SSH_TTY $SSH_CONNECTION > $pathfifo &

    при коннекте по ssh проверяется существует ли именованный канал (FIFO) и если да то стучит в него полезную для нас информацию о том кто, как и куда.

    pathfifo=/tmp/sshd_alarm/fifo; [[ ! -p $pathfifo ]] && mkdir -p -m o=x $(dirname $pathfifo) && mkfifo -m o=rw $pathfifo; tail -f $pathfifo | while read OUTPUT; do notify-send -u critical "Предупреждение безопасности" "$(echo "$OUTPUT"|awk '{print $1" [ "$2" ] инициировал SSH-соединение\n"$3":"$4"  "$5":"$6}')";ffplay -loglevel 24 -nodisp -autoexit /путь/к/аудиофайлу.mp3 &! ;done

    данный код можно запустить в консоли для теста, поэтому для удобства сделал его в виде однострочника, при желании его можно запихнуть в systemd сервис либо общий либо для конкретного пользователя который сработает при старте системы.
    Так вот, данный код создаст если нету FIFO файл куда будет прилетать для нас уведомления от нашего стукача, с помощью awk разбираем строку и шлем notify-send уведомление, а после в фоне запускаем указанный аудиофайл.
    Ответ написан
    Комментировать
  • Существует более мощный, чем nano текстовый редактор из командной строки?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    dte
    а вообще смотри и выбирай по вкусу - Text_editors
    Ответ написан
    4 комментария
  • Где находится скрипт выполняемый при входе SSH?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Отключить сообщение о последнем входе(строка Last login: ...):
    в файле /etc/ssh/sshd_config исправить опцию c yes на no в параметре PrintLastLog

    Остальной текст или действия при входе прописываются в скрипте расположенном в папке /etc/profile.d/, где можно, например, создать файл /etc/profile.d/login.sh (или любой другой, все они обрабатываются при входе) в котором прописать путь к другому запускаемому файлу или напрямую вывести сообщение:
    #!/bin/sh
    ehco "Оставь надежду, всяк сюда входящий"

    выводится после Last login: ...

    п.с.
    можно еще вывести сообщение до Last login: ...
    если его прописать в файле /etc/motd

    Есть еще в файле /etc/ssh/sshd_config параметр PrintMotd no, возможно он работает у меня как-то неправильно так как если устанавливаю в yes то сообщение из файла /etc/motd выводится дважды, до и после Last login: ...
    Ответ написан
    Комментировать
  • Чем ключ отличается от пароля?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    Это опасно.

    Здесь скорее всего имеется в виду не опасность взлома ключа, а опасность его утечки.
    При использовании одного ключа(доступ по паролю) чтобы открыть зашифрованный канал ssh необходимо этот ключ для начала отправить получателю по не зашифрованному каналу. Его могут перехватить и тогда система будет скомпрометирована.
    А вот при использовании открытого(2) и закрытого(2) ключей, перехватить можно только открытые ключи которые используются для зашифровки сообщений, то есть "злоумышленник" сможет только писать но не читать.
    Ответ написан
    6 комментариев
  • Почему прекращается работа приложения при завершении сеанса удаленного доступа?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    если там systemd то делается так:
    # loginctl enable-linger <username>
    прописывается на сервере
    по сути данная команда держит состояние пользователя.
    для отключения:
    # loginctl disable-linger <username>
    Ответ написан
    1 комментарий
  • Как написать цикл чтение из файла данные, разбивка данных на переменные и выполнить коннект?

    xotkot
    @xotkot
    хорошо есть и хорошо весьма
    если я правильно понял то это будет выглядеть примерно так:
    eval "$(cat x.log|awk -F';' '{print "sshpass -p \""$3"\" ssh "$2"@"$1}')"

    где x.log твой файл с которого считываются данные

    > "и если все отлично выводить Ok"
    куда выводить ?) при успехе вы залогинитесь на удалённую машину и перед вами будет другая консоль.
    > "и выдавать в завимости от этого OK или BAD"
    при провале вам выдаст что-то типа этого:
    ssh: connect to host 192.168.1.1 port 22: Connection refused

    согласитесь это немного более информативно чем просто BAD, по крайней мере понятно какой адрес сфейлился, да и правильнее наверное вывод ошибок скидывать в лог файл чтобы потом можно было проанализировать если что
    Ответ написан