Назад | Перейти на главную страницу

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

Каждый раз, когда я вхожу на наш сервер 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).