SSH без пароля с использованием аутентификации по ключу в облаке rackspace не работает: запрашивает пароль

Я пытаюсь установить ssh-соединение без пароля с использованием механизма открытого и закрытого ключей к облачному серверу (запускающему redhat) в стойке.

Мои команды (на сервере):

  1. adduser -g корень
  2. mkdir /home//.ssh
  3. скопируйте мой открытый ключ в /home//.ssh/authorized_keys
  4. chmod 700 /home//.ssh
  5. chmod 600 /home//.ssh/authorized_keys

В конфигурационном файле сервера в облаке стойки:

  1. RSAAuthentication да
  2. PubkeyAuthentication да
  3. #AuthorizedKeysFile .ssh / authorized_keys

Когда я пытаюсь выполнить "ssh -i my_priv_key @server_ip", он терпит неудачу и запрашивает пароль для @server_ip.

Когда я добавил следующую строку в sshd_config на моем сервере, там написано, что в разрешении отказано (publickey, gssapi-keyex, gssapi-with-mic).

Совпадение пароля пользователя Нет аутентификации

Я пытался последние пару часов, но не могу понять. Так что есть идеи, как решить эту проблему.


person Pattu    schedule 28.08.2013    source источник


Ответы (3)


Это не полностью отвечает на ваш вопрос, но я хотел бы показать вам другой способ разместить ваши SSH-ключи на ваших серверах при автоматизации с использованием Rackspace API. Если, например, вы используете pyrax:

import pyrax
import os

pyrax.set_setting("identity_type", "rackspace")
pyrax.set_setting("username", USER_NAME) # User name
pyrax.set_setting("api_key", API_KEY) # Located in the control panel in settings

# Could also use a credential file
# pyrax.set_credential_file(os.path.expanduser("~/.rackspace_cloud_credentials"))

# Put your SSH key on the Rackspace cloud
pubkey = open("my_priv_key").read()
cs.keypairs.create("testkey", pubkey)

# For demo purposes, grab a sample image, server type (flavor in OpenStack parlance)
flavor_512 = [flavor for flavor in cs.flavors.list() if flavor.ram == 512][0]
ubu_image = [img for img in cs.images.list() if "Ubuntu 12.04" in img.name][0]

# Now we can create the server and assign an ssh key
server = cs.servers.create("ubbie", ubu_image.id, flavor_512.id,
        key_name="testkey")

Ваш ключ API находится в разделе «Настройки» и «Контакты» на панели управления облачным хранилищем под секретным вопросом:

Ключ API

Как только сервер будет построен, вы сможете получить IP-адрес.

server = cs.servers.get(server.id)
ip = server.accessIPv4

Затем просто ssh как root, используя указанный вами ключ.

ssh -i my_priv_key root@<ip>

Если Python не является вашим предпочтительным языком, есть другие варианты. Вы также можете делать прямые запросы / использовать curl, если это вам нравится, поскольку это часть Rackspace API и собственно OpenStack / nova.

person Kyle Kelley    schedule 29.08.2013

Вы проверили разрешения и настройки времени на сервере. Кроме того, вы намеренно удалили имя пользователя из сообщения.

Попробуйте выполнить ssh с параметром -v. Это даст больше результатов для отладки.

person bsrawat    schedule 28.08.2013
comment
также убедитесь, что у вас есть правильный контекст selinux на тот случай, если вы его используете. Выполните команду: - restorecon -r -vv /home/user/.ssh - person bsrawat; 28.08.2013
comment
Я проверил разрешения, все в порядке. Я также добавил свой открытый ключ в корневой каталог ssh сервера. Теперь, когда я пробую ssh с -i и закрытым ключом .... Он подключается без запроса пароля ... так что есть идеи, как решить эту проблему для обычных пользователей ...? - person Pattu; 28.08.2013
comment
вы можете вставить сюда вывод ssh -v user @ server - person bsrawat; 29.08.2013

Самый простой способ, который я нашел для настройки ключей SSH на удаленном сервере, - это использовать команду ssh-copy-id.

http://linux.die.net/man/1/ssh-copy-id

person mrjandro    schedule 28.08.2013
comment
Я использовал ssh-copy-id для копирования ssh-ключей в корневой каталог ssh, и он работал нормально, но когда я пытался для пользователей (на сервере) через ssh-copy-id user @ IP, он запрашивал пароль пользователя, хотя пользователь этого не делал. нет. - person Pattu; 29.08.2013