Não é possível conectar-se ao servidor. Conexão fechada pelo servidor remoto

1

Eu estou tentando ssh servidor remoto do meu servidor local. Mas sempre que eu executo o comando ssh:

ssh [email protected]

Eu recebo erro:

Conexão fechada por x.x.x.x

A saída de ssh -vv -v -v [email protected] é:

OpenSSH_5.9p1 Debian-5ubuntu1.1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to x.x.x.x [x.x.x.x] port 22.
debug1: Connection established.
debug3: Incorrect RSA1 identifier
debug3: Could not load "/home/mona/.ssh/id_rsa" as a RSA1 public key
debug1: identity file /home/mona/.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/mona/.ssh/id_rsa-cert type -1
debug1: identity file /home/mona/.ssh/id_dsa type -1
debug1: identity file /home/mona/.ssh/id_dsa-cert type -1
debug1: identity file /home/mona/.ssh/id_ecdsa type -1
debug1: identity file /home/mona/.ssh/id_ecdsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9p1 Debian-5ubuntu1.1
debug1: match: OpenSSH_5.9p1 Debian-5ubuntu1.1 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.1
debug2: fd 3 setting O_NONBLOCK
debug3: load_hostkeys: loading entries for host "151.236.220.15" from file "/home/mona/.ssh/known_hosts"
debug3: load_hostkeys: loaded 0 keys
debug1: SSH2_MSG_KEXINIT sent
Connection closed by x.x.x.x

Eu carreguei o conteúdo do meu id_rsa.pub em chaves known_hosts.

Não consigo fazer login no ssh.

Alguém pode me ajudar nisso? Vai realmente apreciar isso.

Obrigado.

    
por user1957141 10.08.2013 / 13:19

4 respostas

4

Seguindo o ponto de Fred nos comentários (e realmente lendo a mensagem de erro), eu estava incorreto e o ssh estava conectado. Deixarei minha resposta original na parte inferior e, além disso, responda a questão de não conseguir se conectar a um ssh em execução.

Outra boa maneira de diagnosticar problemas do ssh quando o servidor sshd recusa conexões, e se o OP estiver correto nada está sendo logado auth.log ou syslog , é rodá-lo em uma porta separada com depuração habilitada (eu ve escolheu a porta arbitrária de 44 ).

/full/path/to/sshd -p 44 -d 

Você pode se conectar ao seu cliente ssh e obter mais depuração do problema:

ssh -p 44 [email protected]

Root (como Fred apontou em sua resposta) é um usuário que pode ser potencialmente restrito através da opção ssh PermitRootLogin no seu sshd_config . Além disso, os tipos de métodos de autenticação usados pelo seu sshd_config podem restringir ainda mais como você pode acessar seu anfitrião:

RSAAuthentication
PubkeyAuthentication
RhostsRSAAuthentication
HostbasedAuthentication
ChallengeResponseAuthentication
PasswordAuthentication
KerberosAuthentication
GSSAPIAuthentication

Veja a man page do sshd_config ( man 5 sshd_config ) para mais informações sobre essas opções. Geralmente a maioria dos sshds tem RSAAuthentication , PubkeyAuthentication e às vezes PasswordAuthentication . RSAAuthentication é específico de Protocol 1 e a maioria dos hosts usa Protocol 2 , que usa PubkeyAuthentication . Ambos contam com root tendo um arquivo de chave (geralmente encontrado em /root/.ssh/authorized_keys ), mas esse local pode ser substituído pela opção AuthorizedKeysFile . Parece que PasswordAuthentication não está ativado no seu sshd.

Para autenticação RSA e Pubkey, você precisa de um par de chaves. Que você gerou e eles vivem em sua máquina cliente em /home/mona/.ssh/id_rsa e /home/mona/.ssh/id_rsa.pub . O público metade desses dois arquivos (a chave contida em /home/mona/.ssh/id_rsa.pub) você precisaria colocar no arquivo authorized_key do root mencionado acima.

Resposta original, referindo-se a uma falha em conectar-se remotamente ao processo sshd

Parece que o TCPWrappers ou um firewall estão fechando a conexão inicial.

Verifique seus arquivos auth.log ou syslog em /var/log , pois eles podem fornecer algumas pistas sobre o que está bloqueando a conexão.

O TCPwrappers geralmente é implementado por meio de um arquivo /etc/hosts.allow e em alguns unixes um arquivo adicional ou apenas o /etc/hosts.deny (ou seja, sem um arquivo hosts.allow).

As entradas geralmente são da forma:

<service> : <access list> : <allow|deny>

OR

<service> : <access list>

dependendo do tipo de wrapper tcp sendo usado. O formato desses arquivos geralmente pode ser encontrado na página do manual hosts_access man 5 hosts_access . Talvez seja necessário adicionar uma entrada para permitir seu acesso IP remoto.

sshd : my.ip.address.here : allow

A maioria das distribuições com um kernel Linux tendem a usar iptables como o firewall principal, embora algumas usem ipchains . (Eu sei que o FreeBSD usa ipfw que é portado do NetBSD). O seu provedor de serviços também pode ter um firewall ou roteador com um firewall em frente ao seu serviço que esteja bloqueando essas solicitações. Quanto ao firewall que seus hosts usam precisará de alguma investigação.

iptables regras de firewall podem ser listadas por meio do comando iptables -nvL (que deve ser executado como root ou via sudo). o INPUT chain é o conjunto de regras usado para permitir / impedir conexões de entrada do seu host. Talvez seja necessário adicionar uma regra para permitir a entrada de conexões SSH:

iptables -I INPUT -p tcp --dport 22 -j ACCEPT -m comment --comment "Allow SSH connections from all hosts"

Você pode querer permitir apenas conexões de um IP específico:

iptables -I INPUT -s 10.10.10.10 -p tcp --dport 22 -j ACCEPT -m comment --comment "Allow SSH connections from the 10.10.10.10 host"

Se o seu provedor de serviços bloquear a porta 22, provavelmente será necessário colocar o serviço em uma porta diferente (a porta 2222 é bastante popular) através da opção Port no seu arquivo sshd_config (que normalmente mora em /etc/ssh ).

    
por 10.08.2013 / 14:39
1

Aconteceu comigo também. Veja como diagnostiquei e resolvi o problema:

Quando eu executei o sshd em uma porta diferente (não através de "service ssh", mas direto de / usr / sbin), vi alguns avisos. Acontece que eu mudei as permissões de todos os arquivos em / etc / ssh para g + w, então eu poderia editá-los como outro usuário no grupo raiz. Mal movimento. O sshd é muito específico sobre isso e ignora os arquivos de chave rsa que não são somente leitura para ninguém além de root. Eu reverti a alteração de permissões e pude me conectar novamente.

    
por 11.08.2014 / 19:10
0

Só para ter certeza, você tem #PermitRootLogin yes com ou sem o # no seu arquivo sshd_config? Você precisaria disso para ssh como root. E, na verdade, eu sugiro não permitir raiz para ssh em seu servidor (mude a linha para PermitRootLogin no se não estiver definida para isso já). Obrigue todos a fazer login como uma conta normal e, em seguida, su root se eles precisarem de privilégios. Dessa forma, você pode ver quem efetuou login e tornou-se root e evitar que todos, sem um login, tentem adivinhar sua senha root.

A chave pública da máquina do servidor deve estar em known_hosts na máquina cliente para autenticar o servidor, para que você saiba que não está se conectando a algum servidor invasor que esteja representando o servidor desejado. Na primeira vez que você fizer um ssh em um servidor, será solicitado que você aprove a chave que está em known_hosts . Depois, a autenticação do servidor ocorre automaticamente.

Você coloca a chave pública da sua conta (do arquivo .pub) em authorized_keys no servidor. Então, quando você se conecta ao servidor, seu cliente codifica uma mensagem com a chave privada e a envia para o servidor, que usa a chave pública correspondente do arquivo authorized_key para descriptografar a mensagem. Se o servidor puder fazê-lo, isso prova que o cliente tem a chave privada e, portanto, está autorizado a efetuar login.

Minha leitura dos dados de depuração diz que o servidor não consegue encontrar a chave pública da sua conta. Eu usaria o usuário ssh-copy-id para colocar minha chave pública no servidor.

    
por 11.08.2013 / 04:23
0

Isso pode ser um problema com a chave do host SSH no servidor remoto. Veja esta questão e este segmento de suporte da Apple (não se preocupe - não é um problema específico da Apple).

    
por 12.08.2013 / 23:04