ssh-соединение с проблемой клиента OS X

Я пытаюсь настроить соединение ssh из окна OS X, предоставленного Travis CI, в git-over-ssh на github.com.

Ничего необычного: мой скрипт принимает закрытый ключ с ключом без пароля, декодирует его и настраивает следующую оболочку git ssh для обеспечения использования ключа:

unset SSH_AGENT_PID SSH_AUTH_SOCK # Setting up bot key echo "$BOT_SSH_KEY" | base64 --decode >$HOME/bot_id chmod 600 $HOME/bot_id # Setting up ssh wrapper cat >$HOME/git-ssh <<__EOF__ #!/bin/sh -efx ssh -vv -i "$HOME/bot_id" "\$@" __EOF__ chmod a+x $HOME/git-ssh export GIT_SSH="$HOME/git-ssh" 

Затем он пытается выполнить ssh-authenticated git clone, который, согласно журналам, приводит к вызову клиента ssh. Тот же самый сценарий работает на экземплярах Ubuntu Linux, предоставленных Travis, и не работает в экземплярах OS X:

  • Журнал успеха в Linux
  • Журнал сбоев в OS X

Анализируя журналы, они выглядят очень похожими, ожидайте:

  • Ubuntu использует OpenSSH_6.6.1, OS X использует OpenSSH_6.9p1 => kex_parse_kexinit списки немного другого набора доступных шифров
  • Ubuntu использует /home/travis/bot_id , использует OS X /Users/travis/bot_id
  • OS X выдает дополнительные предупреждения о том, что вы не можете увидеть открытую часть ключа (возможно, не очень большое дело):

     debug1: key_load_public: No such file or directory 
  • Ubuntu преуспевает после:

     debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48 debug1: Host 'github.com' is known and matches the RSA host key. debug1: Found key in /home/travis/.ssh/known_hosts:2 Warning: Permanently added the RSA host key for IP address '192.30.253.112' to the list of known hosts. debug1: ssh_rsa_verify: signature correct debug2: kex_derive_keys debug2: set_newkeys: mode 1 debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug2: set_newkeys: mode 0 debug1: SSH2_MSG_NEWKEYS received debug1: SSH2_MSG_SERVICE_REQUEST sent debug2: service_accept: ssh-userauth debug1: SSH2_MSG_SERVICE_ACCEPT received debug2: key: /home/travis/bot_id ((nil)), explicit debug1: Authentications that can continue: publickey debug1: Next authentication method: publickey debug1: Trying private key: /home/travis/bot_id debug1: key_parse_private2: missing begin marker debug1: read PEM private key done: type RSA debug2: we sent a publickey packet, wait for reply debug1: Authentication succeeded (publickey). Authenticated to github.com ([192.30.253.112]:22). ... 
  • OS X не работает:

     debug1: Server host key: ssh-rsa SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8 debug1: read_passphrase: can't open /dev/tty: Device not configured debug1: permanently_drop_suid: 501 ssh_askpass: exec(/usr/X11R6/bin/ssh-askpass): No such file or directory Host key verification failed. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 

Насколько я понимаю, клиент ssh должен по крайней мере (1) подключиться, (2) проверить ключи и идентификаторы сервера, (3) начать пробовать различные методы auth. Из того, что я вижу, OS X получает соединение, но затем даже не пытается выполнить какие-либо проверки (или жалобы на проверку RSA не удалось или что-то еще), но каким-то образом обходит все предварительно заданные методы auth (т.е. ключ без пароля) и напрямую переходит «интерактивно запрашивать информацию аутентификации» method =>, а затем сбой, поскольку он явно отключен, поскольку CI не является интерактивным сервером.

Любые идеи, что не так с OS X ssh и как заставить его работать, или, по крайней мере, добавить отладку? По мере моих догадок, вероятно, это как-то бесшумно терпит неудачу в проверке подлинности сервера, но я понятия не имею, как отлаживать это (особенно учитывая, что у меня нет ящиков OS X, которые можно попробовать в интерактивном режиме).

  • Должен ли этот метод шифрования / загрузки Fedora работать в Deb / Ubuntu?
  • Ubuntu 16.04 - проблема DNS при пробуждении ноутбука из режима приостановки
  • Сеть Ubuntu: невозможно подключиться к локальной сети
  • Разметка. Руководство Arch против Ubuntu
  • Пакеты, хранящиеся во время обновления apt-get
  • добавление дополнительных треков с помощью sox и командной строки
  • Как заставить ноутбук переключиться на внешний монитор HDMI при подключении?
  • Как исправить ненадежную карту Realtek Wireless на Ubuntu 13.04
  • One Solution collect form web for “ssh-соединение с проблемой клиента OS X”

    Оказалось, что действительно проблема заключалась в содержании файла .ssh/known_hosts . Travis ssh использует довольно много параметров по умолчанию, поэтому он будет пытаться запрашивать подтверждение на каждом новом ключе, что, в свою очередь, приведет к этому неясному сообщению об ошибке.

    На Ubuntu команда Travis поставляет пресетный файл .ssh/known_hosts , который содержит 5 строк с популярными ключами github:

     github.com,192.30.252.129 ssh-dss AAAAB3NzaC1kc3MAAACBANGFW2P9xlGU3zWrymJgI/lKo//ZW2WfVtmbsUZJ5uyKArtlQOT2+WRhcg4979aFxgKdcsqAYW3/LS1T2km3jYW/vr4Uzn+dXWODVk5VlUiZ1HFOHf6s6ITcZvjvdbp6ZbpM+DuJT7Bw+h5Fx8Qt8I16oCZYmAPJRtu46o9C2zk1AAAAFQC4gdFGcSbp5Gr0Wd5Ay/jtcldMewAAAIATTgn4sY4Nem/FQE+XJlyUQptPWMem5fwOcWtSXiTKaaN0lkk2p2snz+EJvAGXGq9dTSWHyLJSM2W6ZdQDqWJ1k+cL8CARAqL+UMwF84CR0m3hj+wtVGD/J4G5kW2DBAf4/bqzP4469lT+dF2FRQ2L9JKXrCWcnhMtJUvua8dvnwAAAIB6C4nQfAA7x8oLta6tT+oCk2WQcydNsyugE8vLrHlogoWEicla6cWPk7oXSspbzUcfkjN3Qa6e74PhRkc7JdSdAlFzU3m7LMkXo1MHgkqNX8glxWNVqBSc0YRdbFdTkL0C6gtpklilhvuHQCdbgB3LBAikcRkDp+FCVkUgPC/7Rw== github.com,192.30.252.129 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ== gist.github.com,192.30.252.141 ssh-dss AAAAB3NzaC1kc3MAAACBANGFW2P9xlGU3zWrymJgI/lKo//ZW2WfVtmbsUZJ5uyKArtlQOT2+WRhcg4979aFxgKdcsqAYW3/LS1T2km3jYW/vr4Uzn+dXWODVk5VlUiZ1HFOHf6s6ITcZvjvdbp6ZbpM+DuJT7Bw+h5Fx8Qt8I16oCZYmAPJRtu46o9C2zk1AAAAFQC4gdFGcSbp5Gr0Wd5Ay/jtcldMewAAAIATTgn4sY4Nem/FQE+XJlyUQptPWMem5fwOcWtSXiTKaaN0lkk2p2snz+EJvAGXGq9dTSWHyLJSM2W6ZdQDqWJ1k+cL8CARAqL+UMwF84CR0m3hj+wtVGD/J4G5kW2DBAf4/bqzP4469lT+dF2FRQ2L9JKXrCWcnhMtJUvua8dvnwAAAIB6C4nQfAA7x8oLta6tT+oCk2WQcydNsyugE8vLrHlogoWEicla6cWPk7oXSspbzUcfkjN3Qa6e74PhRkc7JdSdAlFzU3m7LMkXo1MHgkqNX8glxWNVqBSc0YRdbFdTkL0C6gtpklilhvuHQCdbgB3LBAikcRkDp+FCVkUgPC/7Rw== gist.github.com,192.30.252.141 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ== ssh.github.com,192.30.252.149 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ== 

    Однако в OS X этот файл не существует, что вызывает ошибку. Это простейшее решение состоит в том, чтобы просто создать файл с такими строками в OS X из сценария оболочки.

    Я поднял вопрос с командой Трэвиса для этого.

    Interesting Posts

    Как остановить предупреждения от обработки ошибок в JHBuild

    Как я могу удаленно обращаться к серверам Linux

    разверните экран, используя vnc server

    Могу ли я прыгать в прыжок по его номеру в vim?

    не удалось открыть зашифрованное luks устройство (неправильный пароль)

    Zsh git filename завершено с помощью «–git-dir = … –work-tree = …»: не репозиторий git

    Как открыть первые 10 файлов в папке, начиная с определенной буквы или цифры?

    Где находится PCB на linux

    Что означает «целочисленный аргумент» в описаниях системных вызовов?

    Установка (html) опровергает конфликты с пакетом файловой системы

    Разница между .xinitrc, .xsession и .xsessionrc

    Родная и не родная поддержка потокового / процесса программирования в Linux?

    Pidgin & Lync – Некоторые приятели не признаны

    Абсолютный контроль трекпада от относительного отслеживания

    Сетевое взаимодействие между двумя виртуальными машинами на разных хостах

    Linux и Unix - лучшая ОС в мире.