Chef - SSH sem senha

4

Ao executar:

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

Estou recebendo o seguinte erro:

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

Estou tentando conectar-me ao usuário centos que não possui senha, porque desejo usar a autenticação de chave SSH.

Eu tentei passar um número de permutações:

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

tudo sem sucesso ...

se estiver executando com -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}}

Alguma idéia?

    
por James McDougall 18.12.2014 / 20:41

3 respostas

4

Corrigido!

Então, quando você está usando o chef hospedado, você precisa passar uma chave privada com o bootstrap e ter a chave pública no arquivo autherized_keys ....

  1. instale o ChefSDK
  2. SCP seu kit inicial do Chef hospedado
  3. extraia o kit inicial para ~/chef-repo
  4. gera um novo par de chaves: ssh-keygen
  5. adicione a chave pública ao seu arquivo autherized_keys: $ cat id_rsa.pub >> authorized_keys
  6. execute o bootstrap da faca com o seguinte:

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

Isso deve funcionar!

Também gostaria de sugerir que o usuário que você passa como o --ssh-user tem acesso sudo sem senha.

    
por 19.12.2014 / 17:10
2

O que você precisa é de chaves ssh.

Inicialmente, o servidor 'node1' (referido abaixo) precisará de uma senha configurada para o seu usuário 'centos' (referido abaixo). Depois de definir uma senha para esse usuário, siga as instruções abaixo.

Para configurá-lo, faça login no servidor do cliente (o chef que está executando) como o usuário do chef e execute

ssh-keygen -t rsa

Siga as instruções (basta pressionar Enter quando for solicitada uma senha)

Em seguida, execute o seguinte comando

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

Siga as instruções na tela e isso é tudo que existe. Chef deve então pegar a chave ssh automaticamente.

EDITAR:

Para o Hosted Chef, o processo é um pouco diferente. No Chef Manage, vá para Administração > Usuários > e selecione seu nome de usuário. Lá você deve ver uma chave pública.

Faça login no seu servidor de destino como o usuário de destino e, em seguida, verifique se você tem o diretório ~ / .ssh

ls ~/.ssh

Se isso disser "ls: não pode acessar ~ / .ssh: Nenhum arquivo ou diretório" é executado

mkdir ~/.ssh

Então, usando o seu editor de arquivos de linha de comando (eu prefiro o VIM), crie o arquivo ~ / .ssh / authorized_keys e copie a chave pública que você encontrou no Hosted Chef para aquele arquivo.

EDITAR: Se sua chave pública estiver no formato começando:

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

Primeiro, você precisará convertê-lo no formato de chave pública SSH.

Para isso, crie um arquivo em sua máquina local chamado publickey.pem e copie sua publickey para ele. Em seguida, abra um terminal nesse local e execute:

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

Espero que isso ajude. Tim.

    
por 18.12.2014 / 21:34
2

Não conheço ninguém que use as chaves fornecidas pelo Hosted Chef Server ou pelo Chef Server no local como suas chaves de autenticação SSH, como Tim sugere.

As chaves fornecidas pelo servidor Chef geralmente são usadas apenas pelas ferramentas do cliente Chef, como chef-client e knife, para autenticação na API do servidor Chef.

A criação de um par de chaves separado para autenticação SSH, como sugere a primeira resposta de Tim e a resposta final de James, é o caminho certo a seguir. Isso pode ser feito manualmente ou usando o Chef para configurar o sistema com as chaves SSH apropriadas.

    
por 20.12.2014 / 04:06

Tags