Meu servidor está executando o CentOS 5.3. Estou em um Mac rodando o Leopard. Não sei quem é responsável por isso:
Posso fazer logon no meu servidor muito bem via autenticação por senha. Eu segui todas as etapas para configurar o PKA (conforme descrito em http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-ssh-beyondshell.html ), mas quando Eu uso o SSH, ele se recusa a tentar a verificação de chave pública. Usando o comando
ssh -vvv user@host
(em que -vvv aumenta a verbosidade até o nível máximo), recebo a seguinte saída relevante:
debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred keyboard-interactive,password
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
seguido de uma solicitação para minha senha. Se eu tentar forçar o problema com
ssh -vvv -o PreferredAuthentications=publickey user@host
eu recebo
debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred publickey
debug3: authmethod_lookup publickey
debug3: No more authentication methods to try.
Portanto, mesmo que o servidor diga que aceita o método de autenticação de chave pública e meu cliente SSH insista, sou rejeitado. (Observe a ausência conspícua de uma linha "Chave pública da oferta:" acima). Alguma sugestão?
Respostas:
Verifique se a sua máquina Centos possui:
no sshd_config
e verifique se você tem permissão adequada no diretório ~ / .ssh / da máquina centos.
deve fazer o truque.
fonte
chmod go-w ~/
se ainda não o é.755
(como Jinyu Liu menciona abaixo)/etc/ssh/ssh_config
Eu tive um problema semelhante - o PC remoto não podia usar a autenticação de chave pública para fazer login no servidor CentOs 6. O problema no meu caso estava relacionado ao SELinux - o diretório inicial do usuário que tentava efetuar login tinha contextos de segurança de mensagens. Eu resolvi isso usando a
restorecon
ferramenta assim:fonte
/home
para o que eles normalmente estão no layout do diretório/home
.restorecon -Rv /root
1- verifique seu / etc / ssh / sshd_config, verifique se você possui
2- verifique o log seguro da máquina remota, procure o log de erro detalhado do daemon sshd. por exemplo no meu Ubuntu
Em seguida, verifique a propriedade e os modos do diretório / home / xxx, talvez você precise executar este
fonte
Verifique se suas permissões estão corretas e a estrutura do arquivo (especificamente a ortografia) está correta, para máquinas locais e remotas. O URL a que você se refere indica todos eles, mas vale a pena verificar se o que você tem corresponde. Normalmente, as permissões geram um erro relevante.
Você verificou se a caixa sshd_config no seu CentOS 5.3 está definida para permitir PubkeyAuthentication ou RSAAuthentication?
Verifique os logs do servidor SSH no sistema CentOS - ele pode fornecer mais informações. Não tenho certeza se o CentOS verifica a chave ssh na lista negra que o debian faz, mas vi rejeições de chave pública ssh que são relativamente silenciosas no que diz respeito à saída -vvv, mas os logs explicaram claramente o que estava acontecendo
fonte
Consegui! Acontece que era um problema do lado do cliente. (Acho que qualquer problema no servidor teria produzido uma saída de depuração mais útil.) Por motivos desconhecidos para mim, no meu Mac, o arquivo / etc / ssh_config tinha a linha
Comentei essa linha e agora tudo funciona bem.
fonte
Além dos modos de arquivos / diretórios, verifique se a propriedade está correta! Um usuário deve possuir seu próprio diretório inicial, .ssh /, e arquivos nele.
Eu tive que correr
chown -R $user:$user /home/$user
para superar minhas falhas de ssh.fonte
Verifique também se ele pode fornecer automaticamente uma chave ou não, use -i path / to / key se não for ou apenas para testar
fonte
Parece um problema de configuração para mim. Como Daniel sugeriu, há duas coisas para verificar:
$HOME/.ssh/authorized_keys
são legíveis; efonte
Verifique o nome de usuário com o qual você está tentando fazer login. Por padrão, é o seu nome de usuário na máquina local.
fonte
A saída do cliente como em
ssh -v
revelará que há um problema em uma determinada etapa do protocolo, mas quando é devido a algo no servidor, o cliente não será informado da causa. Verifique os arquivos de log do servidor para descobrir o que há de errado. Você provavelmente precisa estarroot
em ordem para ter permissões para fazê-lo. Por exemplo, para umsshd
configurado para efetuar logon no syslog, você pode encontrar as mensagens em/var/log/secure
. Como estes:O motivo neste caso foi um padrão (estúpido)
default
de0002
. Isso significa, acesso de gravação para o grupo. (Nome do grupo = nome de usuário, mas ainda assim.) O daemon SSH não confiará em arquivos que possam ser adulterados por outras pessoas além do usuário (bem eroot
, é claro). Você pode resolver o problema usandochmod
.fonte
eu só fiquei preso no mesmo problema acessando com o fedora core 16 a centavos 5.5
os logs e detalhado parecia exatamente o mesmo
o problema era a chave pública, ele obteve alguns dados falsos, regenerou-os e publicou-os no servidor sshd_server, o sshd_client está enviando as informações da chave, mas não é reconhecido pelo servidor (ele não corresponde a nenhuma das chaves das chaves autorizadas)
fonte
Outro mordido por isso. Após uma longa pesquisa, descobri que eu estava alimentando explicitamente ssh a chave pública (com a opção -i) em vez da chave privada. Doh!
fonte