Каждый раз, когда я вхожу на наш сервер CentOS 5, MediaTemple (dv), я должен сделать:
ssh-agent $BASH
ssh-add .ssh/my_id
как только мне удалось войти в систему. Это используется для нашего сервера, чтобы участвовать в нашем рабочем процессе git, и, поскольку мы довольно много повторяем в процессе разработки, я устаю делать одно и то же снова и снова.
Добавление этого в .bash_profile сервера не совсем работает, и мое очень ограниченное понимание ssh говорит мне, что это потому, что выполнение ssh_agent $BASH
в значительной степени просто порождает новое окно входа в систему (и, таким образом, прекращает выполнение следующих строк файла ...).
Как заставить сервер работать с ключом каждый раз, когда я удаленно вхожу в него?
Это скопировано из сценария, который я сделал несколько месяцев назад для команд, с которыми я работаю, и использую в своем .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;
}
Проще всего включить переадресацию агента в SSH, чтобы он использовал агент в вашей локальной системе, а не на сервере. В противном случае вы можете сделать то, что предлагается на странице руководства, и запустить eval $(ssh-agent -s)
.