it-roy-ru.com

Ошибка SSH: в Ansible отказано в доступе (публичный ключ, пароль)

Я новичок в ansible и пытаюсь это реализовать. Я перепробовал все возможные способы присутствия в интернете, а также все вопросы, связанные с ним, но все же не могу устранить ошибку. Пожалуйста, помогите мне.

Я установил ANSIBLE PlayBook на свой MacBook. Я создал VM с IP-адресом 10.4.1.141 и IP-адресом хоста 10.4.1.140.

Я попытался подключиться к своему VM с помощью Host через ssh. Он подключился с помощью следующей команды:

ssh [email protected]

и я получил доступ к Shell. Это означает, что мой SSH работает нормально.

Теперь я попробовал следующую команду для Ansible:

ansible all -m ping

И содержимое в /etc/ansible/Host является 10.4.1.141

Затем он показывает следующую ошибку:

10.4.1.141 | FAILED => Ошибка SSH: в доступе отказано (открытый ключ, пароль).

при подключении к 10.4.1.141:22 Иногда полезно повторно запустить команду, используя -vvvv, который печатает выходные данные отладки SSH, чтобы помочь диагностировать проблему.

Затем я попытался создать файл config в папке .ssh/ на хост-компьютере, но ошибка остается той же.

Содержимое файла config:

  IdentityFile ~/.ssh/id_rsa

это путь к моему личному ключу.

Затем я выполнил ту же команду ansible all -m ping и снова получил ту же ошибку.

Когда я попробовал другую команду 

ansible all -m ping -u user --ask-pass

Затем он попросил пароль SSH, я дал его (чертовски уверен, что пароль правильный), но я получил эту ошибку:

10.4.1.141 | FAILED => FAILED: аутентификация не пройдена.

Это журнал с использованием -vvvv:

<10.4.1.141> ESTABLISH CONNECTION FOR USER: rajatg <10.4.1.141> REMOTE_MODULE ping <10.4.1.141> EXEC ssh -C -tt -vvv -o ControlMaster=auto -o ControlPersist=60s -o ControlPath="/Users/rajatg/.ansible/cp/ansible-ssh-%h-%p-%r" -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o ConnectTimeout=10 10.4.1.141 /bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1445512455.7-116096114788007 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1445512455.7-116096114788007 && echo $HOME/.ansible/tmp/ansible-tmp-1445512455.7-116096114788007' 10.4.1.141 | FAILED => SSH Error: Permission denied (publickey,password). while connecting to 10.4.1.141:22 It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.

Я до сих пор не могу понять, в чем проблема. Это мой последний выбор, чтобы спросить здесь, после того, как все мои исследования. Последняя ссылка, на которую я ссылался, - https://valdhaus.co/writings/ansible-mac-osx/

Пожалуйста, помогите мне, я застрял. Заранее спасибо!

16
Rajat Gupta

Я исправил проблему. Проблема была в моем /etc/ansible/hosts.

Содержимое, написанное в /etc/ansible/hosts, было 10.4.1.141. Но когда я изменил его на [email protected], проблема была исправлена. 

Спасибо всем за вашу поддержку и предоставление мне большей ясности по поводу проблемы с помощью комментариев.

25
Rajat Gupta

Большая часть проблемы возникает при подключении машин Ubuntu к хостам. Решение Ansible требуется, какой пользователь хочет подключиться, потому что Ubuntu не имеет пользователя по умолчанию root.

для файла Hosts 

[Тест-Web-сервер]

10.192.168.10 ansible_ssh_pass = foo ansible_ssh_user = foo

3
user10126649

Если вы авторизуетесь с ssh [email protected]:

Опция 1

Затем убедитесь, что в вашем файле hosts внутри etc\ansible есть: 

[server01]
10.4.1.141

затем в etc\ansible запустите: ansible all -m ping -u user --ask-pass

Вариант 2

Если вы хотите войти без ввода пароля ssh, то в вашем файле hosts внутри etc\ansible вы добавляете: 

[server01]
10.4.1.141 ansible_ssh_pass=xxx ansible_ssh_user=user

затем в etc\ansible запустите: ansible all -m ping

для меня это сработало в обоих направлениях.

1
bebs

Если вы выполняете ANSIBLE с помощью Sudo, например,

Sudo ansible -m ping all

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

1
Jan Clemens Stoffregen

Я также исправил эту проблему.

Моя проблема была также в моем файле hosts /etc/ansible/hosts

Я изменил свой файл hosts с 172.28.2.101 На name-of-server-in-ssh-config

У меня были IP в файле hosts. Поскольку у меня уже есть настройки SSH для имен, мне не нужно использовать переменную или имя пользователя перед хостами.

[name-stg-web]
server-name-stg-web[01:02]
1
camdixon