Загрузка 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;
}