Como ssh do cliente Linux para o host OS X sem mensagem de erro “ssh_exchange_identification: Conexão fechada pelo host remoto”?

1

Minha LAN compreende um computador desktop que executa o Linux (Debian Wheezy), um MacBook com o OS X Mavericks e um modem-roteador; ssh com as funções do host Linux e do cliente OS X - sem problemas na conexão de um cliente para outro.

Além disso, tentei implementar o inverso - o computador Linux também se tornou um cliente e o computador OS X também se tornou um host. Mas a tentativa de ssh do cliente Linux para o host OS X resulta em

ssh_exchange_identification: Connection closed by remote host

Isso acontece independentemente de o firewall do Mac estar ativado ou desativado.

Eu já experimentei várias soluções sugeridas pelas pesquisas do Google, inclusive em:

insira a descrição do link aqui insira a descrição do link aqui

(O sistema não me permitiu postar mais links.)

Tenho quase certeza de que as propriedades, permissões e configurações dos arquivos estão corretas.

A mesma porta, digamos 1234, é configurada para ssh em cada computador como host e cliente; Os comandos netstat dos dois computadores indicam que a porta 1234 é ouvida. Nem o DenyHosts nem o fail2ban estão instalados.

No cliente Linux, /var/log/auth.log não fornece mensagens relevantes.

Telnet de cliente para host gera

Connection closed by foreign host.

No host OS X, no momento de uma tentativa de conexão ssh:

/var/log/appfirewall.log mostra

MacBook.local socketfilterfw[636] <Info>: sshd-keygen-wrapper: Allow TCP CONNECT (in:1 out:0 )

/var/log/system.log mostra

MacBook.local com.apple.preference.security.remoteservice[662]: nsc_smb XPC: handle_event error : < Connection invalid >

Parece que o problema está no host do OS X e que a chave para resolvê-lo pode estar nessas mensagens, mas não consegui encontrar informações úteis.

No MacBook, Preferências do Sistema > Segurança & Privacidade > Firewall > As opções de firewall, “Login remoto (SSH)” e “invólucro sshd-keygen” são definidas como “Permitir conexões de entrada”.

"Login Remoto" está ativado em Preferências do Sistema > Compartilhando.

O que poderia estar causando o problema de conexão ssh e como resolvê-lo?

Informações adicionais desde o primeiro post

Obrigado pelas respostas, mas eu já tinha feito tudo descrito nos links, tinha Remote Login com meu nome de usuário (alex) como usuário, e reiniciei ssh em ambos os computadores após cada alteração relacionada a ssh, seguida pela reinicialização de ambos os computadores . Também reinstalou o ssh várias vezes no computador Linux e gerou novas chaves várias vezes em ambos os computadores.

Talvez eu devesse ter esclarecido isso em ssh_config para os dois clientes

PasswordAuthentication no
PubkeyAuthentication yes

Aqui está a saída solicitada do host OS X: (não tenho certeza de como é útil porque eu mudei a porta ssh do padrão 22, para dizer 1234)

MacBook:~ alex$ ssh -vvv localhost
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug2: ssh_connect: needpriv 0
debug1: Connecting to localhost [::1] port 22.
debug1: connect to address ::1 port 22: Connection refused
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: connect to address 127.0.0.1 port 22: Connection refused
debug1: Connecting to localhost [fe80::1%lo0] port 22.
debug1: connect to address fe80::1%lo0 port 22: Connection refused
ssh: connect to host localhost port 22: Connection refused

Informação adicional esclarecedora:

MacBook:~ alex$ ssh -vvv -p 1234 localhost
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug2: ssh_connect: needpriv 0
debug1: Connecting to localhost [::1] port 1234.
debug1: connect to address ::1 port 1234: Connection refused
debug1: Connecting to localhost [127.0.0.1] port 1234.
debug1: Connection established.
debug3: Incorrect RSA1 identifier
debug3: Could not load "/Users/alex/.ssh/id_rsa" as a RSA1 public key
debug1: identity file /Users/alex/.ssh/id_rsa type 1
debug1: identity file /Users/alex/.ssh/id_rsa-cert type -1
debug1: identity file /Users/alex/.ssh/id_dsa type -1
debug1: identity file /Users/alex/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
ssh_exchange_identification: Connection closed by remote host
MacBook:~ alex$ 

Saída solicitada do cliente Linux:

alex@desktop:~$ ssh -v [email protected]
OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for *
debug1: /etc/ssh/ssh_config line 102: Applying options for *
debug1: Connecting to MacBook.local [192.168.0.3] port 1234.
debug1: Connection established.
debug1: identity file /home/alex/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /home/alex/.ssh/id_rsa-cert type -1
ssh_exchange_identification: Connection closed by remote host
alex@desktop:~$ 

Depois de muito esforço para fazer o ssh trabalhar com o Linux como host e com o OS X como cliente, imaginei que fazer o inverso seria relativamente simples. Talvez seja, mas não tão longe! Mais ajuda seria muito apreciada.

Lars

MacBook:~ alex$ sudo sshd -t
Password:
/etc/sshd_config: No such file or directory
MacBook:~ alex$

O arquivo sshd_config está em / private / etc / ssh, assim como os arquivos-chave ssh_config e ssh_host.

Problema resolvido

Eu coloquei uma cópia de sshd_config em / private / etc e fiz sudo sshd -t . A saída gerou erros de formatação sugerindo erros de estilo com uma referência ao rtf. A fonte foi Times. Eu copiei o arquivo do computador Linux e, no processo, a fonte mudou de texto simples.

Alterei o arquivo sshd_config em / private / etc / ssh para texto simples, alternando “Login remoto” em Preferências do sistema > Compartilhando no Mac, emitiu o comando ssh do cliente Linux e conseguiu se conectar ao host OS X pela primeira vez.

Eu não encontrei o comando sshd -t antes, então agradeço ao Lars por chamar minha atenção e me apontar na direção certa. A solução foi realmente simples, mas identificá-lo não foi.

    
por James Jamieson 01.10.2014 / 17:39

1 resposta

0

Você provavelmente precisa ativar o acesso remoto no seu Mac. Siga estes passos ..

  1. No seu Mac, abra as preferências de compartilhamento e selecione "Login remoto"
  2. Especifique quais usuários podem fazer login: todos os usuários ou "Somente esses usuários".

Então você deve ser capaz de usar o comando ssh.

ssh -v user@macOSX-hostname

Se ele não se conectar, recorte / cole toda a conexão para que possamos ver onde ela falha. -v deve dar-lhe algumas informações.

    
por 01.10.2014 / 22:26