As conexões SSH / SFTP falham silenciosamente no problema OSX 10.8.2 - ssh-agent

6

Estou tentando fazer login em uma máquina remota com SSH ou SFTP.

  • quando tento ssh [email protected] , a CLI simplesmente não responde. Eu recebo uma nova linha vazia, na qual eu posso digitar caracteres, mas nada mais.
  • quando tento me conectar com SFTP usando as mesmas credenciais (uso Transmit como meu cliente SFTP) ele fica pendurado para sempre e não se conecta.

Sem erros. Sem resposta.

O problema não é específico de frbit.com e persiste com qualquer outro servidor que eu tente conectar.

depuração do cliente ssh

Executando o cliente ssh com o sinalizador -vv, obtive a seguinte saída:

debug1: Reading configuration data /Users/matanya/.ssh/config
debug1: Reading configuration data /usr/local/Cellar/openssh/6.1p1/etc/ssh_config
debug2: ssh_connect: needpriv 0
debug1: Connecting to ssh1.eu1.frbit.com [46.137.57.195] port 22.
debug2: fd 3 setting O_NONBLOCK
debug1: fd 3 clearing O_NONBLOCK
debug1: Connection established.
debug1: identity file /Users/matanya/.ssh/id_rsa type 1
debug1: identity file /Users/matanya/.ssh/id_rsa-cert type -1
debug1: identity file /Users/matanya/.ssh/id_dsa type 2
debug1: identity file /Users/matanya/.ssh/id_dsa-cert type -1
debug1: identity file /Users/matanya/.ssh/id_ecdsa type -1
debug1: identity file /Users/matanya/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.5p1
debug1: match: OpenSSH_5.5p1 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.1
debug2: fd 3 setting O_NONBLOCK
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug2: kex_parse_kexinit: ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: [email protected],[email protected],ssh-rsa,[email protected],[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit: none,[email protected],zlib
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: kex_parse_kexinit: diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: kex_parse_kexinit: ssh-rsa,ssh-dss
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: hmac-md5,hmac-sha1,[email protected],hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit: none,[email protected]
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit:
debug2: kex_parse_kexinit: first_kex_follows 0
debug2: kex_parse_kexinit: reserved 0
debug2: mac_setup: found hmac-md5
debug1: kex: server->client aes128-ctr hmac-md5 none
debug2: mac_setup: found hmac-md5
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP
debug2: dh_gen_key: priv key bits set: 140/256
debug2: bits set: 543/1024
debug1: SSH2_MSG_KEX_DH_GEX_INIT sent
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
debug1: Server host key: RSA 31:4c:71:e0:56:14:04:0d:c7:b2:6c:fc:8a:42:33:2e
debug1: Host 'ssh1.eu1.frbit.com' is known and matches the RSA host key.
debug1: Found key in /Users/matanya/.ssh/known_hosts:2
debug2: bits set: 513/1024
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: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received

depuração do ssh-agent

UPDATE: passando pelo meu local (máquina do cliente ssh) system.log encontrei o seguinte:

Mar  6 10:28:17 matanyas-imac com.apple.launchd.peruser.501[235] (org.openbsd.ssh-agent[574]): Exited with code: 1
Mar  6 10:28:17 matanyas-imac com.apple.launchd.peruser.501[235] (org.openbsd.ssh-agent): Throttling respawn: Will start in 10 seconds
Mar  6 10:28:27 matanyas-imac com.apple.launchd.peruser.501[235] (org.openbsd.ssh-agent[575]): Exited with code: 1
Mar  6 10:28:27 matanyas-imac com.apple.launchd.peruser.501[235] (org.openbsd.ssh-agent): Throttling respawn: Will start in 10 seconds

O que significa Code 1 ?

UPDATE: encontrei o arquivo com o qual launchd tem problemas em System/Library/LaunchAgents/org.openbsd.ssh-agent.plist :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.openbsd.ssh-agent</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/ssh-agent</string>
        <string>-l</string>
    </array>
    <key>ServiceIPC</key>
    <true/>
    <key>Sockets</key>
    <dict>
        <key>Listeners</key>
        <dict>
            <key>SecureSocketWithKey</key>
            <string>SSH_AUTH_SOCK</string>
        </dict>
    </dict>
        <key>EnableTransactions</key>
        <true/>
</dict>
</plist>

Quando executo /usr/bin/ssh-agent , obtenho:

SSH_AUTH_SOCK=/var/folders/pg/1g6_hnwx47bgqv5vcm1lq18h0000gn/T//ssh-01WuaHF32SlV/agent.2145; export SSH_AUTH_SOCK;
SSH_AGENT_PID=2146; export SSH_AGENT_PID;
echo Agent pid 2146;

como para o -l flag ( <string>-l</string> ), não existe esse flag na minha versão de ssh-agent . Saídas:

ssh-agent: illegal option -- l

ps aux | grep ssh saídas:

matanya         1121   0.0  0.0  2441136   3280   ??  S     1:53PM   0:00.01 ssh -oNumberOfPasswordPrompts 1 -2 -lu-indgo -s ssh1.eu1.frbit.com sftp
matanya         1116   0.0  0.0  2441136   3280   ??  S     1:52PM   0:00.01 ssh -oNumberOfPasswordPrompts 1 -2 -lu-indgo -s ssh1.eu1.frbit.com sftp
matanya         1101   0.0  0.0  2441136   3280   ??  S     1:51PM   0:00.01 ssh -oNumberOfPasswordPrompts 1 -2 -lu-indgo -s ssh1.eu1.frbit.com sftp
matanya         1095   0.0  0.0  2441136   3280   ??  S     1:50PM   0:00.01 ssh -oNumberOfPasswordPrompts 1 -2 -lu-indgo -s ssh1.eu1.frbit.com sftp
matanya         1084   0.0  0.0  2441136   3280   ??  S     1:50PM   0:00.01 ssh -oNumberOfPasswordPrompts 1 -2 -lu-indgo -s ssh1.eu1.frbit.com sftp
matanya         1593   0.0  0.0  2439184   2092 s000  S+    2:36PM   0:00.00 grep ssh

Versão SSH: OpenSSH_5.8p2, OpenSSL 0.9.8r 8 de fevereiro de 2011

ATUALIZAÇÃO: Descobri que não importa com qual usuário eu inicialmente faço login na inicialização do sistema - seja meu ou da raiz - ssh não funcionará até que eu seja explicitamente alternar usuário no terminal ( su - ou su matanya )

ATUALIZAÇÃO:

Eu verifiquei as assinaturas de código. Ran: codesign -vv /usr/bin/ssh-agent :

recebido:

/usr/bin/ssh-agent: code object is not signed at all
In architecture: x86_64

Deve ser:

/usr/bin/ssh-agent: valid on disk
/usr/bin/ssh-agent: satisfies its Designated Requirement

ATUALIZAÇÃO:

Quando executo :

eval 'ssh-agent'
ssh-add

Eu consigo entrar com o ssh.

    
por Matanya 12.03.2013 / 19:15

2 respostas

10

Razão da falha silenciosa ao conectar

Seus erros system.log mostram que você tem um problema com o ssh-agent em execução localmente no seu iMac. Por alguma razão, ele não é executado mesmo se o launchd tentar reiniciá-lo.

Quando você tenta se conectar usando qualquer cliente ssh (CLI ou Transmit), eles tentam usar ssh-agent , mas não podem se conectar a ele, pois ele não está sendo executado. Daí a espera sem saída nem entrada.

Não tenho certeza do que impede que o seu agente ssh seja executado. No entanto, para executar seu cliente ssh na CLI e conectá-lo aos seus servidores, você pode tentar o seguinte:

unset SSH_AUTH_SOCK
ssh [email protected]
# (you'll then be asked for you pass phrase if you use one)

Você pode até tentar iniciar o Transmit na mesma janela do Terminal:

open /Applications/Transmit.app

Sobre a depuração do ssh-agent

Se ssh-agent -l disser que a opção -l é ilegal, significa que não é o agente ssh original da Apple que seu sistema está tentando executar ( -l é um recurso não documentado da Apple). O agente ssh substituto está se tornando infeliz. Esta postagem no blog pode ter algumas explicações sobre o motivo.

Se você tiver ferramentas ssh de terceiros (vindas de brew, macports ou outros canais), recomendo que você as mova para fora do caminho ou as atualize (desde que sejam compatíveis com launchd, por exemplo: a opção -l existe). Uma invocação de ssh-agent em funcionamento deve responder a algo como:

antoine@amarante:~$ /usr/bin/ssh-agent -l
launch_msg: Operation not permitted

Também é uma boa idéia verificar se você não inicia o ssh-agent em outros locais como .bashrc ou outros scripts de inicialização de sessão. Ter múltiplos, e possivelmente diferentes, ssh-agent rodando ao mesmo tempo é potencialmente uma fonte de problemas.

    
por 08.03.2013 / 12:09
1

Gostaria de verificar a conexão SSH com outro programa como o Cyberduck ?

Também encontrei o solução , onde você precisa verificar os agentes de lançamento nos seguintes locais:

/Macintosh HD/Library/LaunchAgents/
/Macintosh HD/Library/LaunchDaemons/
/username/Library/LaunchAgents/
/username/Library/LaunchDaemons/

e, em seguida, verifique os executáveis ou arquivos em falta sem o sinalizador de executável alternado.

A versão local da mina OpenSSH é OpenSSH_5.9p1, OpenSSL 0.9.8r 8 fev 2011

Você também pode experimentar o OpenSSH a partir de macports ou brew . Eu pessoalmente prefiro macports então brew se eu precisar de qualquer coisa não no OS X por padrão.

ATUALIZAÇÃO:

  1. Tente executar ssh -a [email protected] , o mesmo que acima, mas com o encaminhamento de agente desativado
  2. verifique se suas chaves de acesso às chaves estão corretas
  3. verifique se o seu diretório ~ / .ssh tem permissões corretas (0600)
  4. verifique se suas chaves estão corretas.
  5. tente executar "source 'ssh-agent'" antes de executar o comando ssh

UPDATE2:

No meu sistema (OS X 10.8) org.openbsd.ssh-agent.plist é assim:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.openbsd.ssh-agent</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/ssh-agent</string>
        <string>-l</string>
    </array>
    <key>ServiceIPC</key>
    <true/>
    <key>Sockets</key>
    <dict>
        <key>Listeners</key>
    <dict>
            <key>SecureSocketWithKey</key>
            <string>SSH_AUTH_SOCK</string>
        </dict>
    </dict>
        <key>EnableTransactions</key>
        <true/>
</dict>
</plist>

Também eu ses isto:

$ /usr/bin/ssh-agent -l
launch_msg: Operation not permitted
$ shasum -a 256 /usr/bin/ssh-agent 
e21e2f23819b60f6288edda97427d98413c1bb737d49d313e2857f058627aab6  /usr/bin/ssh-agent
    
por 07.03.2013 / 08:40