Eu tenho uma gota do Digital Ocean à qual estou tentando me dar acesso ssh. Não tenho certeza do que foi feito anteriormente. Tentei adicionar minha chave pública por meio da interface do usuário do Digital Ocean. Isso não funcionou, eu continuei entendendo permission denied (publickey)
.
Eu acessei o servidor através do console digital do oceano e adicionei manualmente minha chave pública a /root/.ssh/authorized_keys
. Eu tentei ssh usando ssh [email protected]
. Isso não funcionou (permissão negada).
Então, tentei adicionar um novo usuário, criei o /home/me/.ssh
diretório com permissões 700
no .ssh
próprio diretório e 600
no authorized_keys
arquivo. Então eu tentei ssh [email protected]
. Isso também não funcionou.
Reiniciar o daemon ssh também não muda nada.
o que estou perdendo?
Editar:
Aqui está a saída detalhada do ssh.
https://gist.github.com/jaesung2061/a37cfd68308414cede8abf7f0137daa9
Edição 2:
LogLevel DEBUG3
resultado:
fonte
LogLevel DEBUG3
insshd_config
). Suspeito que estes sejam problemas de permissão, mas pode haver várias razões para isso.[date omitted] www sssh[15029]: Connection closed by x.x.x.x port 55519 [preauth]
ls -ld ~ ~/.ssh ~/.ssh/authorized_keys
? Para o detalhado log do servidor modificar o arquivo mencionado acima, o serviço ssh reiniciar, ligar novamente e postar o log (deve ser tambémauth.log
.Respostas:
Configuração do Cliente
Configuração
~/.ssh/config
A configuração de entradas do host
ssh
é realmente fácil e poupa muitos problemas. Aqui está um exemplo:Neste exemplo, a configuração nós
digitaloceanbox
egithub
egithub.com
para que possamos fazer os seguintes comandos:ssh github
ssh digitaloceanbox
Se quisermos fazer login como um usuário diferente daquele especificado no arquivo de configuração, basta colocar
user@
no início:ssh user@digitaloceanbox
Gerando
ssh
chavesObserve que eu especifiquei o caminho completo da chave privada que desejo gerar quando solicitado
ssh-keygen
. Também defini o comment (-C
), que permite identificar facilmente chaves em máquinas remotas.Isso criará dois arquivos:
.ssh/digitalocean-rsa
.ssh/digitalocean-rsa.pub
Quando você fornecer sua
ssh
chave, verifique se é a.pub
versão !! Ao adicionar à sua~/.ssh/config
, certifique-se de adicionar a chave privada correta que corresponde à chave pública que você adicionou ao sistema.Configuração do servidor
A maioria das instalações vem com a autenticação de chave pública ativada. No entanto, se você começar a fazer as coisas à toa, poderá ter alguns problemas. No local em que o OP está com problemas, eu recomendo que o OP exclua o
/root/.ssh/
diretório para recomeçar.Não é recomendável usar
ssh
para acessar o usuário root no sistema remoto. É recomendável que você façassh
outro usuário e, em seguida, passe para o root usando sua senha (sudo su -
).Adicione chaves ao host usando
ssh-copy-id
Independentemente de você decidir criar outro usuário e usá-lo
ssh
como usuário root, é a maneira recomendada de colocarssh
chaves em um servidor:ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
Isso permite
sshd
criar o diretório e os arquivos necessários com as permissões necessárias. Isso significa que não há chance de você atrapalhar as permissões ou precisar se lembrar dos detalhes. Basta usar a ferramenta para fazer upload das chaves.Desativar autenticação de senha
Dito isto, depois de se autodeclarar e verificar se você pode se conectar usando as chaves, é recomendável desabilitar a autenticação por senha
sshd
e reiniciar o serviço:/etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
E os novos usuários?
Se você desabilitar a autenticação por senha, como pode inserir novos usuários? Uma maneira é adicionar arquivos de modelo ao
/etc/skel
diretório. Depois de digitar um usuário, faça o seguinte:sudo cp -r .ssh/ /etc/skel/
ls /etc/skel/.ssh
/etc/skel/.ssh/
para que fiquem em branco, a menos que você deseje se autodefinir automaticamente para cada usuário recém-criado.Quando você cria novos usuários
sudo useradd -m newuser
, esse usuário terá o.ssh/authorized_keys
, que você pode editar e terá as permissões apropriadas.Depuração
Você pode assistir ao
sshd
arquivo de log para ver por que as conexões falham ou são recusadas:sudo tail -f /var/log/auth.log
Enquanto você estiver executando este comando, use outro terminal para tentar um logon. Muitas vezes as mensagens fornecidas são boas o suficiente para ajudar a identificar o problema ou encontrar uma solução online.
fonte
O Ssh é bastante exigente quanto à propriedade, permissões de arquivos e diretórios com as teclas ssh.
~ / .ssh / deve pertencer ao proprietário e ter 700 permissões. ~ / .ssh / allowed_keys deve pertencer ao proprietário e ter 600 permissões.
Então, para root:
Para o usuário me:
E então tente novamente.
Obviamente, você também deve verificar em / etc / ssh / sshd_config se o root tem permissão para fazer login, ou apenas com as teclas ssh.
Se você tem :
então você pode definir:
E, em seguida, reinicie o sshd:
e tente novamente.
Observe que, com o ssh, o daemon sshd pode ser reiniciado mesmo ao usar uma sessão ssh para isso. Openssh foi projetado para lidar com isso.
Olhando para os snippets de arquivos de log enviados, parece que você está usando o MacOSX? Você poderia criar uma nova chave ssh lá?
Além disso, descobri no passado que, quando tenho mais de uma chave ssh privada no meu computador local para o meu usuário, isso às vezes impossibilita o login remotamente com o ssh. Ajudou bastante fazer entradas no computador local no arquivo ~ / .ssh / config, para resolver isso. Por exemplo :
Depois disso, tente na linha de comando no seu computador local:
Ao usar chaves ssh, bem como nenhuma chave ssh para alguns outros logins, você pode, além das entradas com chaves ssh, também definir um login ssh sem o uso da chave ssh no arquivo ~ / ssh / config, por exemplo:
Este trabalho é bom para mim. Também é possível definir qual chave usar na linha de comando:
Isso pode facilitar a depuração e, na linha de comando, isso sempre deve funcionar no computador local.
fonte
sudo chmod 700 /home/me/
IdentityFile
linha me tirou de uma rotina de uma hora.Verifique novamente a configuração do daemon ssh (deve estar
/etc/ssh/sshd_config
) e verifique:Verifique também o arquivo de configuração para ver se AllowUsers ou AllowGroups foi definido, pois eles agem como listas brancas de usuários e grupos, respectivamente.
Além disso, notei que você está tentando adicionar uma chave ao usuário root. Por padrão, o login raiz deve estar desativado, mas você também pode alterar isso através do campo PermitRootLogin .
fonte
Permission denied (publickey)
De acordo com os logs que você vinculou, acho que você tem problemas no lado do cliente ao não encontrar o arquivo de chave privada .
Primeiro verifique se o arquivo
~/.ssh/id_rsa
existe na sua máquina local e se está correto _ (se você tiver mais).Verifique as
.ssh
permissões da pasta (deve serdrwx------
, se não for executadasudo chmod 700 ~/.ssh
) e seu conteúdo (deve ser-rw-------
, se não for executadasudo chmod 600 ~/.ssh/*
) . Aplique as mesmas permissões para a máquina remota também.Além disso, você pode tentar forçar o uso da chave privada desejada , fornecendo-a diretamente
ssh
com o-i
parâmetroVocê pode executar algo como o seguinte:
ssh -i /path/to/your/private-key [email protected]
ou
ssh -i ~/.ssh/id_rsa [email protected]
Você pode obter mais informações na página de manual do ssh (executada
man ssh
no seu terminal) .Lembre-se também de que, se você deseja fazer login como
root
usuário, sua conta root deve ser ativada antes do login, criando uma senha para elesudo passwd root
ou sua ferramenta de administração do servidor (o Ubutntu possui a conta root desativada por padrão) . Você pode obter mais informações no Ubuntu Wiki .Espero que ajude.
fonte
Acabei reinstalando,
openssh-server
corrigindo o problema. As soluções dadas são ótimas, mas não funcionaram para mim. Não tenho idéia do que estava causando o problema, mas acho que o desenvolvedor anterior pode ter mexido com a configuração e estragado as coisas muito mal.Duvido que haja alguém com um problema tão específico quanto o meu. No entanto, se você tiver uma gota do Digital Ocean, não poderá obter acesso SSH e nenhuma das soluções fornecidas funcionar, reinstale o servidor SSH executando esses comandos no console do Digital Ocean. Cuidado: este é um processo destrutivo e apagará os arquivos de configuração antigos
/etc/ssh/
(não no seu.ssh
diretório).Supondo que suas chaves / cliente ssh estejam em ordem, você poderá fazer o SSH no seu servidor.
fonte
Este problema apareceu para mim usando a imagem do Debian no Digital Ocean. De alguma forma, durante o breve processo de configuração, provavelmente quando eu definir a senha root, o proprietário
/root
foi alterado para o usuáriodebian
. Eu vi o seguinte em/var/log/auth.log
:Jul 26 20:58:17 docker sshd[12576]: Authentication refused: bad ownership or modes for directory /root
A simples execução
chown root:root -R /root
resolveu o problema.HTH
fonte
Só tive um problema muito semelhante. Isso funcionou para mim - Adicione esta linha ao / etc / ssh / sshd_config
Em seguida, reinicie o ssh da maneira usual.
fonte