web-dev-qa-db-fra.com

Chef - Ssh sans mot de passe

Lors de l'exécution:

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

Je reçois l'erreur suivante:

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

J'essaie de vous connecter à Centos Utilisateur qui n'a pas de mot de passe, car je souhaite utiliser Auth-Key SSH.

J'ai essayé de passer un certain nombre de permutations:

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

tout sans succès ...

si courir avec -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}}

Des idées?

5
James McDougall

Je ne suis au courant de quiconque utilise les touches fournies à partir d'un serveur Chef Hébergement ou du serveur Chef sur site comme des clés d'authentification SSH comme suggère TIM.

Les clés fournies par le serveur Chef ne sont généralement utilisées que par des outils clients de Chef tels que Chef-Client et Couteau pour authentifier l'API du serveur Chef.

Création d'une paire de touches distincte pour l'authentification SSH, comme suggère la première réponse de Tim's Ultimate, est la bonne façon d'y aller. Cela peut être fait manuellement ou en utilisant le chef pour configurer le système avec les touches SSH appropriées.

2
Jeremiah Snapp

Ce dont vous avez besoin sont des clés SSH.

Initialement, le serveur "Node1" (appelé ci-dessous) aura besoin d'un jeu de mots de passe pour votre utilisateur 'Centos' (appelé ci-dessous). Une fois que vous avez défini un mot de passe pour cet utilisateur, suivez les instructions ci-dessous.

Pour la configurer, connectez-vous sur le serveur client (le seul chef d'exécution) comme utilisateur du chef et exécutez

ssh-keygen -t rsa

Suivez les instructions (appuyez simplement sur Entrée lorsqu'il est demandé un mot de passe)

Puis exécutez la commande suivante

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

Suivez les instructions à l'écran et c'est tout ce qu'il y a.
Le chef devrait alors récupérer cette clé SSH automatiquement.

Edit :

Pour le chef hébergé, le processus est un peu différent. Dans Chef Gérer Aller à Administration> Utilisateurs> et sélectionnez votre nom d'utilisateur. Là-bas, vous devriez voir une clé publique.

Connectez-vous sur votre serveur cible comme utilisateur cible, puis vérifiez si vous avez le répertoire ~/.ssh

ls ~/.ssh

Si cela dit "LS: Impossible d'accéder à ~/.ssh: aucun fichier ou répertoire de ce type"

mkdir ~/.ssh

Ensuite, utilisez votre éditeur de fichier de ligne de commande de choix (i préféver Vim) Créez le fichier ~/.sSH/Authorize_Keys et copie de la clé publique que vous avez trouvée sur le chef hébergé dans ce fichier.

Edit : Si votre clé publique est au format Démarrer:

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

Vous aurez d'abord besoin de convertir cela dans le format de clé publique SSH.

Pour ce faire, créez un fichier sur votre machine locale appelée PublicationKey.pem et copiez votre bus public. Puis ouvrez un terminal à cet endroit et exécutez:

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

J'espère que cela t'aides. Tim.

2
Tim Armstrong-Ooi