Ошибка SSH: разрешение запрещено (публикация, пароль) в Ansible

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

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

Я попытался подключиться к моей виртуальной машине, используя хост через SSH, он подключился с помощью следующей команды:

ssh [email protected]

и я получил доступ к оболочке. Это означает, что мой 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 и снова получил ту же ошибку.

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

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.

Я до сих пор не могу понять, в чем проблема. Это мой последний выбор, чтобы спросить это здесь после того, как все мои исследования. Это ссылка, на которую я ссылался

Ответ 1

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

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

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

Ответ 2

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

для файла Hosts

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

10.192.168.10 ansible_ssh_pass = foo ansible_ssh_user = foo

Ответ 3

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

Опция 1

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

[server01]
10.4.1.141

затем в etc\ansible run: 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 run: ansible all -m ping

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

Ответ 4

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

Моя проблема была также в файле моих хостов /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]

Ответ 5

Если вы выполняете функцию sudo, например

sudo ansible -m ping all

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

Ответ 6

Вышеуказанные решения, к сожалению, не сработали (дилетант DevOps здесь!). Но ниже работает для меня.

Измените свой файл инвентаря на:

[webserver] 10.4.1.141 ansible_user=ubuntu

доступный веб-сервер --private-key pem_file.pem -m ping

Удар по команде с -vvvv помог мне отладить ее больше.

Ссылка: https://github.com/ansible/ansible/issues/19584

Ответ 7

Упоминание имени пользователя в файле /etc/hosts также может решить проблему.

#sudo vim /etc/hosts
[test-server]
ip_address ansible_user="remote pc username" 

Ответ 8

Проблема заключается в файле инвентаря.

vi/etc/ansible/hosts

[веб-сервер] 192. ###. ###. ### ansible_ssh_user = user ansible_ssh_pass = pass

Надеюсь, это поможет!