Назад | Перейти на главную страницу

Chef - SSH без пароля

При выполнении:

knife bootstrap {{IP}} --ssh-user centos --ssh-password '' \
--sudo --use-sudo-password --node-name node1 \
--run-list 'recipe[learn_chef_httpd]'

Я получаю следующую ошибку:

ERROR: Net::SSH::AuthenticationFailed: Authentication failed for user centos@{{IP}}@{{IP}}

Я пытаюсь подключиться к пользователю centos, у которого нет пароля, потому что я хочу использовать SSH-Key Auth.

Я пробовал пройти ряд перестановок:

knife bootstrap {{IP}} -x centos -i .chef/james-chef-validator.pem  --sudo  --run-list 'recipe[learn_chef_httpd]'

все безуспешно ...

если работает с -VV:

...

DEBUG: allowed methods: publickey,gssapi-keyex,gssapi-with-mic
DEBUG: none failed
DEBUG: trying publickey
DEBUG: connecting to ssh-agent
ERROR: could not connect to ssh-agent
ERROR: all authorization methods failed (tried none, publickey)
ERROR: Net::SSH::AuthenticationFailed: Authentication failed for user  centos@{{IP}}@{{IP}}

Любые идеи?

Починил это!

Поэтому, когда вы используете хостинг Chef, вам необходимо передать закрытый ключ с помощью начальной загрузки и иметь открытый ключ в вашем файле autherized_keys ....

  1. установить ChefSDK
  2. SCP ваш стартовый набор от шеф-повара
  3. извлеките стартовый комплект, чтобы ~/chef-repo
  4. сгенерируйте новую пару ключей: ssh-keygen
  5. добавьте открытый ключ в свой файл autherized_keys: $ cat id_rsa.pub >> authorized_keys
  6. запустите загрузочную ленту ножа со следующим:

    sudo knife bootstrap {{server-ip}} --ssh-user {{your-server-user}} -i ~/.ssh/id_rsa --sudo --node-name web1

Это должно сработать!

Я также предлагаю, чтобы пользователь, которого вы указываете как --ssh-user, имел беспарольный доступ sudo.

Вам нужны ssh-ключи.

Первоначально серверу 'node1' (указанному ниже) потребуется пароль, установленный для вашего пользователя 'centos' (упоминаемый ниже). После того, как вы установили пароль для этого пользователя, следуйте приведенным ниже инструкциям.

Чтобы настроить его, войдите на клиентский сервер (тот, на котором работает chef) в качестве пользователя chef и запустите

ssh-keygen -t rsa

Следуйте инструкциям (просто нажмите Enter, когда вас спросят пароль)

Затем запустите следующую команду

ssh-copy-id <targetuser>@<targetserver>

Следуйте инструкциям на экране, и это все.
После этого шеф-повар должен автоматически получить этот ключ ssh.

РЕДАКТИРОВАТЬ:

Для Hosted Chef процесс немного другой. В Chef Manage перейдите в Администрирование> Пользователи> и выберите свое имя пользователя. Там вы должны увидеть открытый ключ.

Войдите на целевой сервер как целевой пользователь, затем проверьте, есть ли у вас каталог ~ / .ssh

ls ~/.ssh

Если там написано «ls: не удается получить доступ к ~ / .ssh: нет такого файла или каталога», запустите

mkdir ~/.ssh

Затем, используя выбранный вами редактор файлов командной строки (я предпочитаю VIM), создайте файл ~ / .ssh / authorized_keys и скопируйте открытый ключ, который вы нашли на Hosted Chef, в этот файл.

РЕДАКТИРОВАТЬ: Если ваш открытый ключ имеет формат, начинающийся:

-----BEGIN PUBLIC KEY-----

Сначала вам нужно будет преобразовать это в формат открытого ключа SSH.

Для этого создайте на своем локальном компьютере файл с именем publickey.pem и скопируйте в него свой открытый ключ. Затем откройте терминал в этом месте и запустите:

ssh-keygen -f publickey.pem -i -m PKCS8

Надеюсь это поможет. Тим.

Я не знаю никого, кто использовал бы ключи, предоставленные с Hosted Chef Server или локального Chef Server, в качестве ключей аутентификации SSH, как предлагает Тим.

Ключи, предоставляемые сервером Chef, обычно используются только клиентскими инструментами Chef, такими как chef-client и Knife, для аутентификации в API сервера Chef.

Создание отдельной пары ключей для аутентификации SSH, как показывают первый ответ Тима и окончательный ответ Джеймса, - это правильный путь. Это можно сделать вручную или с помощью Chef настроить систему с соответствующими ключами SSH.