ssh-агент с паролями без создания слишком большого количества процессов
Вопрос
Я использую ssh-агент с ключами, защищенными паролем, в Linux.Каждый раз, когда я захожу на определенную машину, я делаю это:
eval `ssh-agent` && ssh-add
Это работает достаточно хорошо, но каждый раз, когда я вхожу в систему и делаю это, я создаю еще один ssh-агент.Когда-нибудь я сделаю killall ssh-agent
чтобы пожинать их.Есть ли простой способ повторно использовать один и тот же процесс ssh-агента в разных сеансах?
Решение
взгляните на брелок.Это писали люди, оказавшиеся в похожей на вас ситуации.Брелок
Другие советы
Насколько вы контролируете эту машину?Одним из ответов может быть запуск ssh-agent как процесса-демона.Другие варианты описаны на эта веб-страница, в основном проверяя, есть ли агент, а затем запуская его, если его нет.
Чтобы воспроизвести одну из идей здесь:
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn’t work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
Ты можешь сделать:
ssh-agent $SHELL
Это приведет к завершению работы ssh-агента при выходе из оболочки.Они по-прежнему не будут передаваться между сеансами, но, по крайней мере, исчезнут, когда вы это сделаете.
В зависимости от того, какую оболочку вы используете, вы можете установить разные профили для оболочек входа и просто обычных новых оболочек.Обычно вы хотите запустить ssh-агент для оболочек входа, а не для каждой подоболочки.В bash эти файлы будут .bashrc
и .bash_login
, например.
В настоящее время большинство настольных Linux используют для вас ssh-агент.Вы просто добавляете свой ключ с помощью ssh-add, а затем пересылаете ключи в удаленные сеансы ssh, запустив
ssh -A