Ошибка 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
Надеюсь, это поможет!