Я настраиваю сервер непрерывной интеграции (CI) и тестовый веб-сервер. Я бы хотел, чтобы CI-сервер имел доступ к веб-серверу с аутентификацией с открытым ключом. На веб-сервере я создал пользователя и сгенерировал ключи
sudo useradd -d /var/www/user -m user
sudo passwd user
sudo su user
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/var/www/user/.ssh/id_rsa):
Created directory '/var/www/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/www/user/.ssh/id_rsa.
Your public key has been saved in /var/www/user/.ssh/id_rsa.pub.
Однако с другой стороны, CI-сервер копирует ключ на хост, но по-прежнему запрашивает пароль.
ssh-copy-id -i ~/.ssh/id_rsa.pub user@webserver-address
user@webserver-address's password:
Now try logging into the machine, with "ssh 'user@webserver-address'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Я проверил веб-сервер, и открытый ключ CI-сервера был скопирован на веб-сервер authorized_keys, но когда я подключаюсь, он запрашивает пароль.
ssh 'user@webserver-address'
user@webserver-address's password:
Если я попытаюсь использовать пользователя root, а не моего созданного пользователя (оба пользователя имеют скопированные открытые ключи). Он соединяется с открытым ключом
ssh 'root@webserver-address'
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.18-274.7.1.el5.028stab095.1 x86_64)
* Documentation: https://help.ubuntu.com/
Last login: Wed Apr 11 10:21:13 2012 from *******
root@webserver-address:~#
В вашем вопросе говорится, что вы хотите войти на веб-сервер с сервера CI. Но затем вы говорите, что создали ключи на веб-сервере. Не знаю, недоразумение это или опечатка.
Вот краткий обзор того, что вам нужно сделать, чтобы разрешить вход на веб-сервер с сервера CI с ключами:
id_rsa.pub
) на веб-сервер в ~/.ssh/authroized_keys
файл для каждого пользователя, которого вы хотите войти как (root
, user
и т.д.). Я обычно просто использую scp
чтобы скопировать файл на сервер. Если у вас есть несколько ключей, которые будут использоваться для каждого пользователя, добавьте их в authorized_keys
. В противном случае, если это единственный ключ для этого пользователя, вы можете просто переименовать id_rsa.pub
к authorized_keys
..ssh
папка 644 с chmod 644 .ssh
а авторизованный ключевой файл имеет права доступа 700 с chmod 700 .ssh/authorized_keys
.ssh user@webserver
Он не должен запрашивать пароль (предполагается, что вы следовали совету @ khaled относительно файла конфигурации sshd, но по умолчанию обычно разрешается аутентификация ключа перед паролем).