Про музыку
Sep. 30th, 2010 09:32 amЛовлю себя на ощущении, что заново открыл тыщу раз открытое, но все равно приятно.
Пост в качестве напоминания, о том, что это было.
Для начала нужно сгенерировать сами ключи, пароль рекомендую ввести:
$ 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
После этого можно работать.