На локальной машине (OS Linux) генерируем ключ:
# ssh-keygen -t rsa -b 2048 -f /home/user/.ssh/id_rsa -N '' Generating public/private dsa key pair. Your identification has been saved in /home/user/.ssh/id_rsa. Your public key has been saved in /home/user/.ssh/id_rsa.pub. The key fingerprint is: 95:e8:94:83:74:5c:63:0a:e1:4d:6d:77:30:86:aa:7b user@u1zer The key's randomart image is: +--[ RSA 2048]----+ | +ooo+.+. | | o *.=++... | | o Boo. . | | o.o | | .S | | . | | . | | . E | | . | +-----------------+
-t rsa — тип ключа. Есть rsa и dsa. -b 2048 длина ключа -f /home/user/.ssh/id_rsa — каталог где будет сохранен ключ id_rsa и его публичный ключ id_rsa.pub -N '' - позволяет указать ключевую фразу в строчке, в данном случае парольная фраза пустая
Получаем два файла id_rsa и id_rsa.pub. PUB ключ — это публичный, а id_dsa секретный. Переносим файл id_rsa.pub на сервер, куда мы будем подключаться в директорию /home/user/.ssh/ того пользователя под которым мы будем соединяться по ssh.
Копирование файла с ключом на удалённый наш сервер.
ssh-copy-id -i ~/.ssh/id_rsa.pub git@192.168.1.96
Добавляем на локальную машину ключ
Selectel — ведущий провайдер облачной инфраструктуры и услуг дата-центров
Компания занимает лидирующие позиции на рынке на рынке выделенных серверов и приватных облаков, и входит в топ-3 крупнейших операторов дата-центров в России.
ssh-add id_rsa
(Без этого шага у меня не получалось подключиться к ssh по сертификату)
Настройки на сервере
После создания пары ключей, приватный – остается у пользователя в секрете, а публичный необходимо положить в домашнюю директорию пользователя, в файл ~/.ssh/authorized_keys
Меняем права на каталог и на файл:
# chown -R user /home/user/.ssh # chmod 700 /home/user/.ssh/ # chmod 600 /home/user/.ssh/authorized_keys
Также убедитесь что на сервере разрешена авторизация по ключу, для этого в файле /etc/ssh/sshd_config должны быть строки:
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
Если наш пользователь будет совсем без пароля, то для этого нужно в файле /etc/shadow заменить хеш пользовательского пароля на символ *. Пример (cat /etc/shadow) :
user:*:13783:0:99999:7:::
А если на сервере вообще хотим запретить авторизацию по паролям, выставляем параметр в /etc/ssh/sshd_config:
PasswordAuthentication no PermitEmptyPasswords no
После всего этого можно и сделать проверку на локальной машине:
# ssh git@192.168.1.96
На локальной Windows-машине
Надо утилитой puttygen сконвертировать открытый ключ в свой формат, и в настройках putty указать этот сконвертированный файл