Я пытаюсь выполнить ответ на запрос Ansible ansible all -m ping --ask-pass
но я получаю сбои SSH. Поскольку журнал отладки довольно обширен, я сократил приведенную ниже цитату до того места, где, как мне кажется, возникает проблема. Ранее в журнале я мог подключиться к удаленному хосту (безголовая виртуальная машина RHEL5), но при фактическом выполнении «ping» он завершается с ошибкой (-ями) ниже.
debug1: Entering interactive session.
debug2: set_control_persist_exit_time: schedule exit in 60 seconds
debug1: multiplexing control connection
debug2: fd 4 setting O_NONBLOCK
debug3: fd 5 is O_NONBLOCK
debug3: fd 5 is O_NONBLOCK
debug1: channel 1: new [mux-control]
debug3: channel_post_mux_listener: new mux channel 1 fd 5
debug3: mux_master_read_cb: channel 1: hello sent
debug2: set_control_persist_exit_time: cancel scheduled exit
debug3: mux_master_read_cb: channel 1 packet type 0x00000001 len 4
debug2: process_mux_master_hello: channel 1 slave version 4
debug2: mux_client_hello_exchange: master version 4
debug3: mux_client_forwards: request forwardings: 0 local, 0 remote
debug3: mux_client_request_session: entering
debug3: mux_client_request_alive: entering
debug3: mux_master_read_cb: channel 1 packet type 0x10000004 len 4
debug2: process_mux_alive_check: channel 1: alive check
debug3: mux_client_request_alive: done pid = 9664
debug3: mux_master_read_cb: channel 1 packet type 0x10000002 len 264
debug2: process_mux_new_session: channel 1: request tty 1, X 0, agent 0, subsys 0, term "xterm", cmd "/bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-tmp-1392125626.39-45498424175459 && chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1392125626.39-45498424175459 && echo $HOME/.ansible/tmp/ansible-tmp-1392125626.39-45498424175459'", env 0
debug3: mux_client_request_session: session request sent
mm_receive_fd: no message header
process_mux_new_session: failed to receive fd 0 from slave
debug1: channel 1: mux_rcb failed
debug2: channel 1: zombie
debug2: channel 1: gc: notify user
debug3: mux_master_control_cleanup_cb: entering for channel 1
debug2: channel 1: gc: user detached
debug2: channel 1: zombie
debug2: channel 1: garbage collecting
debug1: channel 1: free: mux-control, nchannels 2
debug3: channel 1: status: The following connections are open:
Я подключился по обычному SSH к хост-машине, затем проверил, работает ли xterm на удаленном компьютере и пока он установлен. Он запускается, но взрывается со следующей ошибкой:
xterm Xt error: Can't open display:
xterm: DISPLAY is not set
Я догадываюсь, что ssh подключается, пытается выполнить команды, но не может, потому что xterm вылетает. Я искал способ изменить используемый терминал, но не смог найти ничего в документации. Любой ввод или предложения приветствуются.
На момент написания этой статьи было что-то странное с запуском Ansible в Cygwin в Windows. Не уверен, что это, но это не то, что я могу исправить. Я переключился на виртуальную машину Linux, и все стало работать нормально.
Я заставил его работать на cygin с примерно 2 часами поиска причудливых ошибок в Google со следующей настройкой:
cat /etc/ansible/ansible.cfg
[defaults]
host_key_checking = False
вероятно, плохо для безопасности ..., также:
cat /etc/ansible/hosts
[dbservers]
56.77.50.151 ansible_ssh_port=22 ansible_ssh_user=ssh_user
проверить:
ansible -vvvv all -a "/bin/echo hello"
Мне нужно было убедиться, что аутентификация с открытым закрытым ключом настроена правильно
cat id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
ls -al ~/.ssh/authorized_keys
rm -fv ~/id_rsa.pub
Я подозреваю, что поворотный момент для конфигурация для групп и пользователей на cygwin: и chown -v local_pc_user: local_pc_user ~ / .ssh / id_rsa.pub
и, наконец, результат:
<56.77.50.151> ESTABLISH CONNECTION FOR USER: ssh_user
<56.77.50.151> REMOTE_MODULE command /bin/echo hello
<56.77.50.151> EXEC ['ssh', '-C', '-tt', '-vvv', '-o', 'ControlMaster=auto', '-o', 'ControlPersist=60s', '-o',
'ControlPath=/home/local_pc_user/.ansible/cp/ansible-ssh-%h-%p-%r',
'-o', 'StrictHostKeyChecking=no', '-o',
'Port=22', '-o', 'KbdInteractiveAuthentication=no',
'-o', 'PreferredAuthentications=gssapi-with-mic,
gssapi-keyex,hostbased,publickey', '-o', 'PasswordAuthentication=no', '-o', 'User=ssh_user', '-o', 'ConnectTimeout=10',
'56.77.50.151', "/bin/sh -c 'mkdir -p
$HOME/.ansible/tmp/ansible-tmp-1397676665.28-153356552524280 &&
chmod a+rx $HOME/.ansible/tmp/ansible-tmp-1397676665.28-153356552524280 &&
echo $HOME/.ansible/tmp/ansible-tmp-1397676665.28-153356552524280'"]
<56.77.50.151> PUT /tmp/tmprELaVU TO /export/home/ssh_user/.ansible/tmp/ansible-tmp-1397676665.28-153356552524280/command
<56.77.50.151> EXEC ['ssh', '-C', '-tt', '-vvv', '-o', 'ControlMaster=auto',
'-o', 'ControlPersist=60s', '-o', 'ControlPath=/home/local_pc_user/.ansible/cp/ansible-ssh-%h-%p-%r', '-o', 'StrictHostKeyChecking=no', '-o', 'Port=22',
'-o', 'KbdInteractiveAuthentication=no', '-o',
'PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey', '-o', 'PasswordAuthentication=no', '-o', 'User=ssh_user', '-o', 'ConnectTimeout=10'
, '56.77.50.151', "/bin/sh -c '/usr/bin/python
/export/home/ssh_user/.ansible/tmp/ansible-tmp-1397676665.28-153356552524280/command;
rm -rf /export/home/ssh_user/.ansible/tmp/ansible-tmp-1397676665.28-153356552524280/
>/dev/null 2>&1'"]
56.77.50.151 | success | rc=0 >>
hello
Такое поведение началось после некоторого обновления Ansible. В старых версиях Ansible у меня с этим проблем не было. Кажется, действительно проблема в xterm. Зачем Ansible запускать xterm? Я бы назвал это ошибкой в Ansible.
Во всяком случае, я решил проблему в Cygwin, добавив в ~/.ssh/config
:
ForwardX11 yes