ssh conexão do problema do cliente OS X

1

Estou tentando configurar uma conexão ssh de uma caixa do OS X fornecida pelo Travis CI para o git-over-ssh no github .com.

Nada sofisticado: meu script usa uma chave privada sem senha codificada em base64, decodifica e configura o seguinte wrapper git ssh para impor o uso de chaves:

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"

Em seguida, ele tenta fazer o clone git autenticado por ssh, que, de acordo com os logs, resulta no cliente ssh sendo chamado. O mesmo script funciona nas instâncias do Ubuntu Linux fornecidas pelo Travis e falha nas instâncias do OS X:

Analisando os logs, os dois parecem muito semelhantes, espera por:

  • O Ubuntu usa o OpenSSH_6.6.1, o OS X usa o OpenSSH_6.9p1 = > kex_parse_kexinit lista um conjunto de cifras ligeiramente diferente disponível
  • O Ubuntu usa /home/travis/bot_id , o OS X usa /Users/travis/bot_id
  • OS X emite avisos extras por não conseguir ver a parte pública da chave (provavelmente não é grande coisa):

    debug1: key_load_public: No such file or directory
    
  • O Ubuntu tem sucesso depois de:

    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 falha com:

    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.
    

Tanto quanto eu entendo, o cliente ssh deve no mínimo (1) conectar, (2) verificar as chaves e a identidade do servidor, (3) começar a tentar vários métodos de autenticação. Pelo que vejo, o OS X obtém a conexão, mas nem mesmo tenta fazer nenhuma verificação (ou reclama que as verificações do RSA falharam, ou o que for), mas de alguma forma ignora todos os métodos de autenticação pré-configurados (isto é, senha) e prossegue diretamente para "pedir informações de autenticação interativamente" método = > e depois falha, pois está obviamente desativado, pois o CI não é um servidor interativo.

Alguma idéia do que está errado com o OS X ssh e como fazê-lo funcionar, ou pelo menos adicionar algum depuração? Como meus palpites vão, provavelmente de alguma forma silenciosamente falha na verificação de identidade do servidor, mas eu não tenho nenhuma idéia de como depurar isso (especialmente considerando que eu não tenho nenhuma caixa do OS X à mão para tentar de forma interativa).

    
por GreyCat 14.09.2017 / 13:16

1 resposta

1

Descobriu-se que, de fato, o problema estava no conteúdo do arquivo .ssh/known_hosts . O ssh de Travis usa praticamente as opções padrão, então ele tenta pedir confirmação em cada nova chave, o que, por sua vez, resultará nessa mensagem de erro obscura.

No Ubuntu, a equipe do Travis fornece um arquivo .ssh/known_hosts predefinido, que contém 5 linhas com as chaves populares do 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==

No entanto, no OS X, esse arquivo não existe, o que aciona um erro. Esta solução mais simples é apenas pré-criar o arquivo com linhas como esta no OS X a partir de um script de shell.

Eu criei um problema com a equipe do Travis para este.

    
por 14.09.2017 / 17:55