Eu tenho uma instância de um aplicativo em execução na nuvem na instância do Amazon EC2 e preciso conectá-lo no meu Ubuntu local. Ele funciona bem em um dos locais Ubuntu e também laptop. Recebi a mensagem "Permissão negada (chave pública)" ao tentar acessar o SSH no EC2 em outro Ubuntu local. É tão estranho para mim.
Estou pensando que algum tipo de problema com as configurações de segurança no Amazon EC2, que limitou o acesso de IPs a uma instância ou certificado, pode precisar se regenerar.
Alguém sabe uma solução?
linux
ssh
amazon-ec2
Vorleak Chy
fonte
fonte
Respostas:
A primeira coisa a fazer nessa situação é usar a
-v
opçãossh
, para que você possa ver quais tipos de autenticação são tentados e qual é o resultado. Isso ajuda a esclarecer a situação?Na atualização da sua pergunta, você menciona "em outro Ubuntu local". Você copiou a chave privada ssh para a outra máquina?
fonte
ssh -i <keyfile> bitname@<ec2-address>
. Infelizmente, a-v
opção não me ajudou a encontrar isso, mas ainda é muito útil verificar!/var/log/auth.log
, às vezes você vai ver as seguintes mensagens:Authentication refused: bad ownership or modes for file /var/lib/jenkins/.ssh/authorized_keys
ou qualquer outra coisaComo não foi mencionado explicitamente, o sshd é, por padrão, muito rígido quanto às permissões dos
authorized_keys
arquivos. Portanto, seauthorized_keys
for gravável por alguém que não seja o usuário ou puder ser gravado por alguém que não seja o usuário, ele se recusará a se autenticar (a menos que o sshd esteja configurado comStrictModes no
)O que quero dizer com "pode ser tornado gravável" é que, se qualquer um dos diretórios pai for gravável para alguém que não seja o usuário, os usuários com permissão para modificar esses diretórios poderão começar a modificar as permissões de forma que possam modificar / substituir as autorizadas.
Além disso, se o
/home/username/.ssh
diretório não pertencer ao usuário e, portanto, o usuário não tiver permissões para ler a chave, você poderá encontrar problemas:Observe que Jane não possui o
.ssh
arquivo. Corrija isso viaEsses tipos de problemas de permissão do sistema de arquivos não aparecerão
ssh -v
e nem aparecerão nos logs sshd (!) Até que você defina o nível de log como DEBUG./etc/ssh/sshd_config
. Você quer uma linha que lêLogLevel DEBUG
lá em algum lugar. Recarregue o servidor SSH usando o mecanismo fornecido pela distribuição. (service sshd reload
no RHEL / CentOS / Scientific.) Uma recarga normal não interrompe as sessões existentes./var/log/auth.log
nas distros baseadas no Debian;/var/log/secure
no RHEL / CentOS / Scientific.)Muito mais fácil descobrir o que está errado com a saída de depuração, que inclui erros de permissão do sistema de arquivos. Lembre-se de reverter a alteração para
/etc/ssh/sshd_config
quando terminar!fonte
Authentication refused: bad ownership or modes for directory
Eu recebi esse erro, porque esqueci de adicionar a
-l
opção. Meu nome de usuário local não era o mesmo que no sistema remoto.Isso não responde à sua pergunta, mas cheguei aqui procurando uma resposta para o meu problema.
fonte
ssh host -l user
é o mesmo quessh user@host
, certo?Recebi esta mensagem em uma nova instância baseada na AMI do Ubuntu. Eu estava usando a opção -i para fornecer o PEM, mas ainda estava mostrando a "Permissão negada (chave pública)".
Meu problema era que eu não estava usando o usuário correto. Ao executar o ssh com o ubuntu @ ec2 ... funcionou normalmente.
fonte
sudo
, e é por isso que não estava funcionando.Algo que é mais fácil de ler do que
ssh -v
(na minha opinião, é claro) étail -f /var/log/auth.log
. Isso deve ser executado no servidor ao qual você está tentando se conectar, enquanto tenta se conectar. Ele mostrará erros em texto sem formatação.Isso me ajudou a resolver meu problema:
fonte
tail -f /var/log/secure
Verifique seu arquivo / etc / ssh / sshd_config . Lá, encontre a linha que diz
Essa linha precisa ser modificada para dizer sim em vez de não. Além disso, reinicie o servidor sshd posteriormente.
fonte
/etc/ssh/sshd_config
- se não conseguimos nem entrar no servidor?sudo service sshd reload
Talvez não seja relevante para o pôster atual, mas pode ajudar outras pessoas que o encontrarem ao procurar respostas para situações semelhantes. Em vez de permitir que a Amazon gere o par de chaves ssh, recomendo carregar sua própria chave ssh pública padrão e padrão na Amazon e especificar isso quando você executar uma instância do EC2.
Isso permite descartar a sintaxe do tipo "-i" no ssh, usar o rsync com opções padrão e também a mesma chave ssh em todas as regiões do EC2.
Eu escrevi um artigo sobre esse processo aqui:
fonte
Estranhamente, meu problema acabou sendo o servidor ter sido reiniciado e ter recebido um novo nome DNS. Eu estava usando o nome DNS antigo. Eu sei que isso parece estúpido, mas levei um tempo para descobrir isso.
fonte
Se você estiver tentando se conectar a um telefone CyanogenMod executando o Dropbear, execute as seguintes linhas para garantir que tudo esteja com permissão correta:
ou
e
Isso corrigiu para mim, caso contrário, nada pode se conectar.
fonte
Se você estiver usando CentOS 5, você pode querer definir
StrictModes no
no/etc/ssh/sshd_config
. Estou compartilhando o diretório / home usando NIS / NFS e defino todas as permissões corretamente, mas sempre me solicitava a senha. Depois de definirStrictModes no
, o problema desapareceu!fonte
A resposta de Greg explica como solucionar problemas de maneira melhor, mas o problema real é que você tem uma chave ssh definida em um lado da transação (o cliente), que está tentando autenticação de chave pública em vez de autenticação baseada em senha. Como você não possui a chave pública correspondente na instância do EC2, isso não funcionará.
fonte
Eu tive o mesmo problema e, depois de tentar várias soluções que não funcionaram, abri a porta SSH no firewall do meu roteador (o painel de controle do firewall do roteador está uma bagunça, por isso é difícil dizer o que está acontecendo). De qualquer forma, isso foi corrigido :)
É extremamente irritante que o erro que você recebe seja Permissão Negada, implicando que houve algum tipo de conexão feita, grr.
fonte
Eu estava tendo o mesmo problema, embora supostamente estivesse seguindo todas as etapas, incluindo
No entanto, eu havia iniciado minha instância na região us-west-1. Portanto, o comando acima também deve especificar isso.
Após esse comando, pude fazer o ssh na instância. Passei um tempo antes de perceber o problema e espero que este post ajude outras pessoas.
fonte
Este é um caso raro, mas se você tiver o selinux ativado e estiver usando o nfs para o diretório com as keys_computadas (por exemplo, diretórios pessoais compartilhados), será necessário desativar o selinux (não recomendado por razões de segurança, mas você pode temporariamente desabilitá-lo). para ver se isso está causando o problema) ou permita que o selinux use os diretórios pessoais do nfs. Não tenho certeza dos detalhes, mas isso funcionou para mim
setsebool -P use_nfs_home_dirs 1
fonte
Acabei de experimentar o mesmo problema depois de adicionar inadvertidamente permissões de gravação de grupo ao diretório inicial dos usuários.
Descobri que essa era a causa executando
tail -f /var/log/secure
na máquina e vendo o erroAuthentication refused: bad ownership or modes for directory /home/<username>
.fonte