Как запомнить пароль SSH на одну сессию

Как запомнить пароль SSH на одну сессию

Рассмотрим следующий сценарий:

Я вошел на сервер A как пользователь 'common'. Главное вобщий user заключается в том, что к нему имеет доступ множество людей — он по своей сути не ограничен и небезопасен.

Допустим, мне периодически нужно входить с этого пользователя/сервера, чтобысерверБкак пользовательбезопасный- т.е. мне нужно scp-файлы, владельцем которых являетсязащищенный@серверB.

Хотя у меня есть полный доступ и контроль надбезопасныйпользователь, я определенно не хочу добавлятьобщийоткрытый ключ к доверенным ключам длябезопасныйпользователь - я не хочу никого, кто может войти какобщийчтобы иметь возможность войти какбезопасныйтакже.

Я тоже не хочу вводитьбезопасныйпароль 5 раз в час. В идеале я хотел бы ввести его один раз, чтобы какой-нибудь агент или что-то в этом роде волшебным образом запомнил его - но только для этого сеанса входа - и затем использовать его в любое время, когда я подключаюсь из этого сеанса, пока не истечет время ожидания. kinitНа самом деле, не так, как .

Есть ли что-то, что могло бы достичь этой цели?

решение1

Это не так просто, если у вас есть общий пользователь на промежуточном сервере, и у этого пользователя есть доступ к оболочке, поскольку почти все там по умолчанию доступно для каждого другого сеанса.
Конечно, есть способы в современных ядрах.
Или может быть инструмент, который использует связки ключей сеанса (процесса/потока) для хранения личных данных в ядре, или система, вероятно, может быть сделана достаточно безопасной, чтобы запретить различным процессам одного и того же пользователя получать доступ друг к другу, чтобы программа могла хранить информацию об аутентификации также в обычной памяти пользовательского пространства, защищенной от других сеансов. В любом случае, оба должны были идентифицировать запросы на выполнение аутентификации на основе некоторой информации PID/SID, которая будет работать для базового использования. В конце концов, вам нужен демон, который выполняет настройку сеанса для вас или доставляет сохраненные пароли вашему процессу, чтобы вы могли использовать его с инструментом sshpass или чем-то подобным.

Другой подход заключается в использовании пространств имен и монтировании частного tmpfs или tmpdir (при этом tmpfs лучше защищен или, по крайней мере, менее доступен для пользователей root, чем tmpdir).

Вы можете использовать sshd на отдельном порту с оболочкой, которая настраивает среду пространства имен для этого пользователя, или, что проще всего, на современной системе, по крайней мере, вы можете использовать pam и pam_namespace.so для настройки частного пользователя tmpdir или tmpfs. Там вы можете сохранить свой пароль в открытом тексте для использования sshpass или чем-то подобным, или, что еще лучше, вы можете поместить сокет для ssh-agent в этот каталог и загрузить свой личный закрытый ключ в этого агента, обеспечивая при этом защиту доступа к агенту от доступа других сеансов того же пользователя. Если у вас есть закрытый ключ с надежным паролем, вы также можете сохранить его на машине. В противном случае вам пришлось бы его перенести. Вы также можете сделать весь каталог /tmp таким частным каталогом (возможно, с некоторыми общими подкаталогами) и использовать переадресацию агента SSH достаточно безопасным способом (вы не можете по-настоящему защитить его от злоупотреблений со стороны пользователя root, но, по крайней мере, если вы используете tmpfs, это затруднительно для пользователя root и невозможно для обычного пользователя использовать Auth-Sock).

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

решение2

Вы, вероятно, ищетеssh-agent, который поставляется с OpenSSH. Используйте -tопцию для установки тайм-аута.

Связанный контент