can3p (can3p) wrote,
can3p
can3p

Авторизация при помощи ssh-ключей

Пост в качестве напоминания, о том, что это было.

Для начала нужно сгенерировать сами ключи, пароль рекомендую ввести:

$ ssh-keygen -t rsa

В папке .ssh образуются два файла – id_rsa и id_rsa.pub, наружу нужно отдавать последний, у себя хранить оба ( вернее можно только один id_rsa, но тогда не получится настроить корректную работу ssh-agent и вводить пароль для ключа при каджой операции ).

Следующим шагом нужно закинуть публичный ключ на сервер, с которым хотим работать, пусть это будет host.com, висеть будет на порту 50123. Забрасываем файл на сервер:

$ scp -P 50123 ~/.ssh/id_rsa.pub user@host.com:id_rsa

Далее добавляем ключ к доверенным на сервере и выставляем права на файлы (отсюда):

$ scp -P 50123 ~/.ssh/id_rsa.pub user@host.com:id_rsa
$ ssh user@host.com -p 50123
$ [ -d ~/.ssh ] || (mkdir ~/.ssh; chmod 711 ~/.ssh)
$ cat ~/id_rsa >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ rm ~/id_rsa

Теперь все хорошо, но при каждом соединении нужно вводить пароль для ключа, что надоедает. Можно избавиться от этого, запукая ssh-agent каждую сессию. Чтобы и это автоматизировать, можно добавить следующий скрипт в ~/.bashrc ( отсюда )

SSH_ENV="$HOME/.ssh/environment"
 
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
     /usr/bin/ssh-add;
}
 
# 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 ssh-agent$ > /dev/null || {
         start_agent;
     }
else
     start_agent;
fi

После этого можно работать.


Оригинал: http://blog.dpetroff.ru/tech/ssh_keys
Tags: dev, keys, ssh
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments