Назад | Перейти на главную страницу

Выполнение Ansible ping на удаленном хосте не удается из-за неизвестной ошибки SSH

Я пытаюсь выполнить ответ на запрос 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