Обычно на компьютерах Mac по умолчанию уже запущен ssh-agent.
$ps ax | grep ssh-agent
648 ?? S 0:00.09 /usr/bin/ssh-agent -l
ssh-add следует запускать также от имени вашего пользователя, а не от имени пользователя root, поскольку вы хотите добавить пароль к своему закрытому ключу RSA. Отсюда и ошибка, поскольку у root не запущен связанный ssh-агент.
Вам просто нужно запустить:
ssh-add
и ввести пароль.
Вы также можете навсегда добавить закрытый ключ в свою связку ключей с помощью команды. Пароль будет запрошен при запуске команды.
ssh-add -K ~/.ssh/id_rsa
Утилита users
представляет собой очень маленькую программу, написанную на языке C -, всего около 150 строк кода. Поскольку это часть основных утилит GNU , вы можете загрузить утилиты и прочитать код из users.c
файла.
По умолчанию утилита users
является только оболочкой для utmp
и wtmp
. Есть два очевидных основных подхода к сокрытию того факта, что пользователь вошел в систему.
Первый подход заключается в изменении кода утилиты users
и замене двоичного кода /usr/bin/users
.
Второй подход заключается в удалении следов из файлов журнала utmp
, wtmp
, lastlog
, utmpx
, wtmpx
и т. д., которые могут существовать в *nix-системах.Для этого подхода доступны инструменты очистки журнала -, такие как cloak
, zap
, clear
и т. д. Внимательно прочтите часть 3.4 из «ПОСЛЕ ПЕРЕРЫВА -В» в «ВЗЛОМ UNIX». '.
Конечно, есть много других способов избежать записи в файлы utmp
и wtmp
для конкретных приложений и пользователей, прочтите этот пример для ssh
.
Некоторые дополнительные базовые и общие параметры регистрации для login
можно настроить в файле:
/etc/login.defs
Чтобы лучше понять с точки зрения администратора и пользователя, где users
утилита анализирует свою информацию, просто изучите файлы:
utmpdump /var/run/utmp
utmpdump /var/log/wtmp
sudo utmpdump /var/log/btmp
Дополнительно обратите внимание на примечание в UTMP (5)и WTMP (5)man:
Unlike various other systems, where utmp logging can be disabled by removing the file, utmp must always exist on Linux. If you want to disable who(1), then do not make utmp world readable.
The file format is machine-dependent, so it is recommended that it be processed only on the machine architecture where it was created.
Итак, ответ на вопрос :"Можно ли скрыть от утилиты users
факт входа пользователя в систему?", -ДА, это возможно. Конкретный подход зависит от конкретной ситуации -это зависит от уровня доступа к системе *nix -и т. д.
Тривиально иметь «возможность выполнять системные команды и иметь доступ к системным файлам» в системе, не появляясь в файле /var/run/utmp
, который читает users(1)
.
$ ssh testhost sh
, например, не создает указаний из users
на Centos 7 testhost
, что кто-то работает sh
, который вполне способен выполнять системные команды и получать доступ к системным файлам:
# users
root
# pstree | grep -3 'sh$'
|-sshd-+-sshd---sshd
| |-sshd---bash-+-grep
| | `-pstree
| `-sshd---sshd---sh
|-sssd-+-sssd_be
| `-sssd_nss
|-systemd-journal
Другой способ :запустить оболочку на каком-то старшем порту с помощью socat
или чего-то подобного. Другой способ :запустить веб-сервер, который принимает команды, выполняет их и возвращает результаты. Другой способ :запланировать команды заранее с помощью at(1)
, а затем выйти из системы.