При выполнении:
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 ....
~/chef-repo
ssh-keygen
$ cat id_rsa.pub >> authorized_keys
запустите загрузочную ленту ножа со следующим:
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.