Загрузка ssh-agent при входе в систему

Каждый раз, когда я захожу на наш CentOS 5, сервер MediaTemple (dv), я должен сделать:

ssh-agent $BASH
ssh-add .ssh/my_id

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

Добавление этого к.bash_profile сервера не совсем работает, и мое очень ограниченное понимание ssh говорит мне, что это потому, что ssh_agent $BASH в значительной степени просто порождает новое окно входа в систему (и, таким образом, он прекращает выполнение следующих строк файла...).

Как заставить сервер работать с ключом каждый раз, когда я удаленно захожу на него?

2 ответа

Решение

Самое простое, что можно сделать - включить пересылку агентов в SSH, чтобы он использовал агент в вашей локальной системе, а не на сервере. Если это не удастся, вы можете сделать то, что предлагает на странице руководства, и запустить eval $(ssh-agent -s),

Это скопировано из сценария, который я сделал несколько месяцев назад для команд, с которыми я работаю и использую в моем.bashrc. Он был скомпилирован из коллекции идей и настроен для работы в нескольких операционных системах / средах, поскольку мы обнаружили несовместимости. Он проверяет работающий агент и при необходимости запускает его (сохраняя данные для других оболочек). Затем он проверяет, есть ли у этого агента добавленные ключи, и если нет, добавляет их в течение 10 часов (предназначенных для рабочего дня) с подтверждением использования. При желании подтверждение можно удалить, удалив опции -c в ssh-add.

SSH_ENV="$HOME/.bash_sshagent"
function start_agent {
     echo "Initialising new SSH agent..."
     /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
     echo succeeded
     chmod 600 "${SSH_ENV}"
     . "${SSH_ENV}" > /dev/null
}
# Source SSH settings, if applicable

if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     #ps ${SSH_AGENT_PID} doesn't work under cywgin
     ps -ef | grep ${SSH_AGENT_PID} | grep -q ssh-agent$ || {
         start_agent;
     }
else
     start_agent;
fi
/usr/bin/ssh-add -l > /dev/null || {
        echo No ssh identities detected. Running "ssh-add -c -t 36000"...
        /usr/bin/ssh-add -c -t 36000;
}
Другие вопросы по тегам