Estou tentando conectar-me a um Linode (executando o Ubuntu 12.04 LTS) da minha máquina local (também executando o Ubuntu 12.04 LTS)
Eu criei uma chave pública e privada em minha máquina local e copiei minha chave pública no arquivo allowed_keys do meu Linode. No entanto, sempre que tento ssh no meu Linode, recebo a mensagem de erro Permission denied (publickey)
.
Não é um problema com a configuração do ssh no meu Linode, porque eu posso usá-lo na minha máquina Windows usando a autenticação de chave.
No meu .ssh
diretório na minha máquina Ubuntu local, tenho meus arquivos id_rsa
e id_rsa.pub
. Preciso criar um arquivo allowed_keys na minha máquina local?
EDIT: É isso que recebo quando corro ssh -vvv -i id_rsa [youruser]@[yourLinode]
:
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
server
permissions
ssh
Pattle
fonte
fonte
/var/log/auth.log
) 2) Como você transferiu a chave pública para o servidor? Sempre usessh-copy-id
para ter certeza sobre as permissões. Seu diretório pessoal, o.ssh
diretório e oauthorized_keys
arquivo têm requisitos rígidos de permissão. (veja a página desshd
(8) em~/.ssh/authorized_keys
). 3) Você gerou um novo par de chaves no Ubuntu? Caso você tenha reutilizado a chave do Windows - primeiro será necessário convertê-la para o formato OpenSSH.ssh -vvv -i .ssh/id_rsa ....
(observe o caminho para id_rsa!) - substitua - o log antigo mostra apenas que "nós" não possuímos pubKey para enviar.Respostas:
PubKeyAuthentication
Configure seu cliente
ssh-keygen
vim ~/.ssh/config
ssh-copy-id -i /path/to/key.pub SERVERNAME
Seu arquivo de configuração da etapa 2 deve ter algo semelhante ao seguinte:
Você pode adicionar
IdentitiesOnly yes
para garantir ossh
uso deIdentityFile
e sem outros arquivos-chave durante a autenticação, o que pode causar problemas e não é uma boa prática.Solução de problemas
tail -f /var/log/auth.log
(no servidor) e monitore os erros ao tentar fazer loginIdentitiesOnly yes
limitar a autenticação para usar a chave única especificada.fonte
IdentityFile
linha em ~ / .ssh / config deve apontar para a chave PRIVATE.Às vezes, o problema vem de permissões e propriedade. Por exemplo, se você quiser fazer o login como root,
/root
,.ssh
eauthorized_keys
deve pertencer a raiz. Caso contrário, o sshd não poderá lê-los e, portanto, não saberá se o usuário está autorizado a efetuar login.No seu diretório pessoal:
Quanto aos direitos, vá com 700 por
.ssh
e 600 porauthorized_keys
fonte
authorized_keys
arquivo para fora do meu diretório pessoal criptografado. Ao fazer isso, eu inadvertidamente alterei a propriedade pararoot:root
.Você não precisa
authorized_keys
do seu cliente.Você deve dizer ao ssh-client para realmente usar a chave que você gerou. Existem várias maneiras de fazer isso. Apenas para o tipo de teste
ssh -vvv -i .ssh/id_rsa [youruser]@[yourLinode]
. Você precisará fornecer sua senha sempre que quiser se conectar ao servidor.Se isso funcionou você pode adicionar a chave do
ssh-agent
comssh-add .ssh/id_rsa
(você terá que fornecer a senha apenas uma vez por isso e ele deve funcionar enquanto você não sair / reboot)fonte
~/.ssh/id_rsa
. Além disso, o uso de um agente-chave é totalmente opcional e não está relacionado ao problema, tanto quanto posso ver.Verifique também o valor de
PasswordAuthentication
in/etc/ssh/sshd_config
e, se for,no
altere parayes
. Não se esqueça de reiniciar o serviço ssh depois disso.fonte
O problema que tive foi usar as chaves erradas no cliente. Eu havia renomeado id_rsa e id_rsa.pub para outra coisa. Você pode renomeá-los para o padrão ou, quando emitir o comando ssh, use-o assim
fonte
Verifique também se o diretório pessoal do usuário (no servidor) realmente pertence ao usuário que está sendo transferido (foi definido como root: root no meu caso).
Deveria ter ficado:
fonte
Encontrei esse problema recentemente com meu servidor web.
Normalmente, mantenho uma lista de chaves autorizadas em todos os meus servidores
~/.ssh/authorized_keys2
. Da minha experiência,sshd
irá procurar~/.ssh/authorized_keys
ou~/.ssh/authorized_keys2
por padrão.No caso do meu servidor web, o
/etc/ssh/sshd_config
tinha esta linhaao invés de
Eu apliquei o último, reiniciei meu daemon ssh e resolvi meu problema ao fazer login com ssh usando meu pubkey.
fonte
Outra causa possível pode estar na
AllowedUsers
configuração/etc/ssh/sshd_conf
. NOTA: a lista é delimitada por espaço (não por vírgula) conforme aprendi da maneira mais difícil.fonte
Se tudo mais falhar, verifique se o usuário de login pertence ao AllowedGroup do ssh. Ou seja, seus usuários são membros do grupo mostrado na seguinte linha no
/etc/ssh/sshd_config
servidor:fonte
No meu caso, o cliente é o ubuntu 14.04lts, o servidor foi win 2012 server rodando cygwin. Eu estava usando 'ssh administrator @ xxxx', quando o diretório do servidor de 2012 no cygwin era / home / Administrator. Portanto, diferenciava maiúsculas de minúsculas. Quando tentei 'ssh Administrator @ xxxx' (observe a letra A no administrador), funcionou bem.
Uma mensagem de erro como 'usuário não encontrado' teria me levado à solução muito mais rapidamente do que 'Permissão negada (chave pública, teclado interativo)'.
fonte
Eu tive o mesmo problema ao copiar a chave pública de um usuário comum (por exemplo, johndoe) de um sistema cPanel Centos para um servidor Ubuntu na AWS. Como sugerido por gertvdijk acima, eu verifiquei
/var/log/auth.log
e com certeza disseAuthentication refused: bad ownership or modes for directory /home/johndoe
. Acontece que eu tinha errado 777 '/home/johndoe
ao tentar definir/home/johndoe/public_html
como a raiz de documento do host virtual padrão para o apache2 (isso também não é necessário para essa tarefa).Veja também as respostas aqui e aqui
O servidor precisa apenas ter a chave pública
.ssh/authorized_keys
e o cliente (computador em que você está trabalhando) precisa ter a chave privada (.pem ou se estiver usando SFTP com o Filezilla, .ppk)fonte
Para aqueles usuários Putty como eu que chegaram a esse segmento, você também pode receber esse erro se se esqueceu de adicionar o usuário user @ Ip!
Outros sendo permissão no arquivo de chave chmod para 600)
fonte
Isso foi o que funcionou para mim, a correção não é minha, mas eu prefiro escrevê-la aqui caso outra pessoa tenha o mesmo problema.
O autor original publicou aqui: digital-ocean-public-access-key-denied
Substitua este
Com isso
Salve o arquivo e reinicie o ssh
ssh deve funcionar agora pedindo uma senha
fonte
Eu tive o mesmo problema descrito na pergunta. A saída da execução
ssh -vvv -i id_rsa [youruser]@[yourLinode]
na máquina cliente foi semelhante à descrita na pergunta. Eu verifiquei todas as permissões de arquivo e diretório, conforme recomendado nas outras respostas, e elas estavam corretas.Aconteceu que, ao copiar o arquivo gerado
id_rsa.pub
para a máquina do servidor, como arquivo~username/.ssh/authorized_keys
, eu acidentalmente omiti a palavrassh-rsa
desde o início. Adicioná-lo resolveu o problema.fonte
Também funciona no Ubuntu 16.04.
O problema está dentro do
sshd_config
arquivoAqui está a solução ULTIMATE:
Faça logon como raiz no seu servidor Ubuntu
Agora vá para o final e mude o valor de "não" para "sim".
Deve ficar assim:
Altere para no para desativar as senhas de texto não criptografado
para fazer efeito.
Agora você pode simplesmente usar uma chave usando o seguinte comando da sua máquina LOCAL (também conhecida como laptop etc)
Então, abra a nova janela do terminal e NÃO faça login no servidor, basta colocar este comando:
ssh-copy-id john @ serverIPAddress
(Substitua john pelo seu nome de usuário).
você deveria ir
fonte
Algumas pessoas que se perguntam podem ter configurado o acesso ssh para ser a chave apenas na conta raiz e, em seguida, criaram um novo usuário e não perceberam que precisam
ssh root@your-ip-address
rsync --archive --chown=[user]:[user] ~/.ssh /home/[user]
logout
Então tente novamente. Substitua [usuário] por sua nova conta de usuário.
Isso é comum ao configurar um novo servidor no DigitalOcean quando você usa as teclas ssh na instalação.
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04
fonte
No meu caso, o problema foi causado pela cópia em um
.ssh
diretório de uma máquina mais antiga. Acontece que minha configuração SSH mais antiga estava usando chaves DSA que foram descontinuadas . Mudar para um novo par de chaves, desta vez baseado em RSA, resolveu o problema para mim.fonte
O método a seguir pode funcionar se você puder acessar a máquina A e a máquina B independentemente (por exemplo, da máquina C).
Se o ssh-copy-id não estiver funcionando, a autenticação por senha poderá ser desativada. A seguir está uma solução alternativa .
Ter a chave pública do machineA nas chaves autorizadas do machineB (ou seja, ~ / .ssh / allowed_keys) permitirá que você faça o ssh na máquinaA. Isso também se aplica ao scp.
Após gerar os pares de chaves usando:
ssh-keygen
Na máquina A , execute
cat ~/.ssh/id_rsa.pub
Saída de amostra:
Copie a chave impressa ( ⌘ Command+ Cou CRTL+ C) e adicione-a ao arquivo ~ / .ssh / allowed_keys na máquinaB .
Por exemplo, execute o seguinte na máquinaB :
fonte