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 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments