Я бы хотел, чтобы ssh-agent запускался при запуске Cygwin, так как я часто использую ssh passthrough.

Я попытался добавить:

eval `ssh-agent.exe`

на мой .bashrc , но всякий раз, когда я использую Alt-F2 чтобы открыть новое окно терминала, запускается .bashrc и, следовательно, создаются новые ssh-agent , что нежелательно и мешает проходу.

Затем я попытался переместить команду eval в .bash_profile , но это также приводит к той же проблеме - я думаю, что каждое новое окно терминала считается новой оболочкой для входа.

Третий вариант - использовать cygrunsrv , но я только что узнал об этом, и не совсем ясно, как использовать его для этой конкретной цели, и, возможно, что еще более важно, как передавать информацию SSH_AUTH_SOCK и SSH_AGENT_PID из которой сервис создается, каждому новая оболочка создана.

Приветствуются любые предложения о наилучшем способе достижения этого результата - когда один ssh-агент выполняется и ожидает и его информация немедленно доступна для использования в любой недавно открытой оболочке - приветствуется.

1 ответ1

1

Вы можете поместить его в свой .bashrc , но перед тем, как запустить его снова, вы должны проверить, работает ли он уже. Например, вы можете сделать

if [ -z "$SSH_AUTH_SOCK" ]; then
    (umask 077; ssh-agent > "$HOME/.ssh/environment")
    ssh-add
fi

как часть процесса.

Also, if the agent is not running, you could first test if that environment file exists and source it like

environ="$HOME/.ssh/environment"
if [ -f "$environ" ]; then
    . "$environ" >/dev/null
fi

if [ -z "$SSH_AUTH_SOCK" ] || ! ps -p "$SSH_AGENT_PID" | grep -q ssh-agent; then
    (umask 077; ssh-agent > "$environ")
    ssh-add
fi

Там очень длинный ответ детализация многое из этого здесь на сайте U & L.

Я делаю что-то вроде этого, но у меня в файле environ есть текущее имя хоста, так как мой домашний каталог находится в сетевой папке, и я хочу запустить агент на разных хостах одновременно.

И чтобы явно указать, как это отвечает на ваш вопрос о том, как передать переменную SSH_AUTH_SOCK между процессами, вы сохраняете выходные данные ssh-agent в файле и снова получаете их в каждой оболочке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .