6

Возможный дубликат:
Тайм-аут ключа ssh-agent для экрана или tmux на хосте

У меня есть ноутбук, на котором у меня работает театрализованное представление (агент ключа PuTTy SSH). Если я ssh к системе и запускаю экран, переадресация ssh-ключа работает правильно.

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

Есть ли способ научить отдельное окно экрана подключаться к переадресации агента, чтобы я мог снова использовать мой ключ для пересылки?

2 ответа2

6

Мое решение немного более надежно. Поместите это в свой .bash_profile на удаленной стороне.

if [ -z "${STY}" -a -t 0 ]; then
    reattach () {
        if [ -n "${SSH_AUTH_SOCK}" ]; then
            ln -snf "${SSH_AUTH_SOCK}" "${HOME}/.ssh/agent-screen"
            SSH_AUTH_SOCK="${HOME}/.ssh/agent-screen" export SSH_AUTH_SOCK
        fi
        exec screen -A -D -RR ${1:+"$@"}
    }
fi

Тогда я использую reattach вместо screen . Это можно сделать с помощью command screen -A ${1:+"$@"} и «screen» вместо «reattach».

Проблема с использованием решения «псевдоним» в ответе @David Mackintosh заключается в том, что процессы, запущенные на экране, теперь имеют одинаковое значение SSH_AUTH_SOCK на удаленной стороне. Подумайте о следующем scenerio.

  • local: запуск агента SSH, получающего значение SSH_AUTH_SOCK
  • local: SSH для удаленного, установка нового значения SSH_AUTH_SOCK для удаленного
  • удаленный: стартовый screen или tmux , используя SSH_AUTH_SOCK
  • remote: создать оболочку, которая наследует SSH_AUTH_SOCK с screen
  • удаленный: отсоединиться от экрана и выйти
  • local: SSH для удаленного, установка нового значения SSH_AUTH_SOCK для удаленного
  • remote: повторно подключиться к сеансу экрана, который все еще имеет старое значение SSH_AUTH_SOCK

Хитрость заключается в том, чтобы заставить процессы, работающие внутри экрана, использовать новое значение. Вы можете сделать это, повторно назначая символическую ссылку на текущий SSH_AUTH_SOCK каждый раз, когда вы вызываете screen (для нового или присоединенного сеанса).

1

На самом деле это дубликат тайм-аута ключа ssh-agent с screen или tmux на хосте бастиона

Решение:

  • добавьте в свой .bash_profile:

    echo "export SSH_AUTH_SOCK = $ SSH_AUTH_SOCK"> ~/.ssh/auth_sock

  • добавьте в свой .bashrc:

    псевдоним ssh = "источник ~/.ssh/auth_sock; ssh"

Кажется, это пока работает для меня.

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