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