Поэтому в Ubuntu, когда я подключаюсь к компьютеру по SSH, я получаю приглашение разблокировать свой закрытый ключ, и пока я не выйду из сеанса ОС, я могу подключиться к SSH на столько компьютеров, сколько мне нужно, используя аутентификацию по ключу и не вводя ничего. В Debian я получаю запрос пароля каждый раз, когда я что-либо делаю. Если я запускаю «ssh-add», то мне не нужно будет снова вводить фразу-пароль, пока я продолжаю использовать это же окно терминала. Если я открою новый терминал, мне нужно будет снова запустить ssh-add. У кого-нибудь есть какие-либо советы по получению Debian 7.1 для копирования функций, которые предлагает Ubuntu здесь?

1 ответ1

1

Секрет в том, что в фоновом режиме работает ssh-агент, и Ubuntu где-то сохраняет настройки для этого процесса. Таким образом, чтобы все пошло так, как нужно, вы должны: a) запустить ssh-agent в фоновом режиме и b) сохранить PID этого процесса где-нибудь, чтобы затем вы могли получить значение для PId для всех последующих оболочек.

Когда ssh-agent запущен, он выдаст свой PID и некоторую другую информацию, которую вы захотите получить позже, при создании новых оболочек. В вашем ~/.bashrc может работать что-то вроде следующего:

setf="$HOME/.ssh_agent_settings"          # filename for storing PID etc.
[ -r $setf ] && . $setf > /dev/null 2>1   # source PID etc. if file exists
kill -0 $SSH_AGENT_PID > /dev/null 2>&1   # kill -0 will fail if process doesn't exist
[ "$?" -eq 0 ] && exit                    # kill returns 0 on success
ssh-agent > $setf                         # process doesn't exist, so we create one
. $setf > /dev/null 2>&1                  # source PID of the newly created process

Это запустит ssh-agent при инициализации оболочки, если он еще не запущен, или просто отправьте переменные sid-agent PID и AUTH_SOCK из ~/.ssh_agent_settings .

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