Использовать мой уже запущенный процесс ssh-agent

-gt используется для сравнения чисел, а не строк. Таким образом, вам нужно заменить:

[ ${ages[i]} -gt MAX_AGE ]

на:

[ ${ages[i]} -gt $MAX_AGE ]

Причина в том, что MAX_AGE - это строка. Вы не можете использовать ее как число.

$MAX_AGE - это значение переменной MAX_AGE. Вы можете сравнить его с числом, если это значение можно интерпретировать как целое число.

Для достижения наилучших результатов при использовании [...] переменные следует заключать в двойные кавычки:

[ "${ages[i]}" -gt "$MAX_AGE" ]
3
30.03.2018, 10:24
2 ответа

Вы можете оценить и сохранить выходные данные агента ssh -одновременно,

eval $(ssh-agent | tee agent.env)

, затем с других терминалов или последующих сеансов,

source agent.env

Подтяните разрешения, чтобы сделать их более безопасными,

chmod go-rwx agent.env
4
27.01.2020, 21:15

Во-первых, вы делаете это через сеанс ssh? Если это так, то вы можете использовать ssh -A user@host.comи даже не использовать агент ssh -. Опция -Aпереадресует агента ssh -вашего хоста на удаленный сервер. Тогда вам даже не нужно копировать ваши ssh-ключи на удаленный сервер.

Назад к исходному вопросу :Проблема с запуском ssh-agentзаключается в том, что по умолчанию каждый раз будет использоваться другое случайное имя сокета. Что вы хотите сделать, так это использовать опцию ssh-agent -aдля предоставления фиксированного сокета. Тогда, сколько бы раз вы его ни вызывали, он не запустит другого агента ssh -.

Вот простой скрипт, который всегда будет -использовать один и тот же агент ssh -или запускать агент ssh -, если он не запущен. Вы также можете легко объединить эти 3 строки в псевдоним из 1 строки.

# set SSH_AUTH_SOCK env var to a fixed value
export SSH_AUTH_SOCK=~/.ssh/ssh-agent.sock

# test whether $SSH_AUTH_SOCK is valid
ssh-add -l 2>/dev/null >/dev/null

# if not valid, then start ssh-agent using $SSH_AUTH_SOCK
[ $? -ge 2 ] && ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null

источник

3
27.01.2020, 21:15

Теги

Похожие вопросы