Quero poder efetuar login em um controle remoto via ssh sem precisar digitar a senha o tempo todo.
- Como faço para configurá-lo?
- É necessário um comando diferente para executar uma sessão sem senha?
ssh
authentication
Oxwivi
fonte
fonte
Respostas:
Responda
Execute estes comandos:
Então você precisará copiar a nova chave no seu servidor :
Após a cópia da chave, ssh na máquina normalmente:
Agora você pode fazer login sem digitar uma senha da máquina específica em que executou os comandos.
Exemplo
Explicação
Isso pressupõe que você já pode se conectar com sucesso ao seu servidor via SSH.
Você precisará gerar um par de chaves SSH que permitirá que você se identifique sem usar uma senha. Você pode optar por proteger as chaves com uma senha, se desejar, mas isso pode ser deixado em branco, permitindo o acesso SSH totalmente sem senha.
ssh-keygen
isso criará um arquivoid_rsa
eid_rsa.pub
. Opub
arquivo é o que se passa nos servidores, a chave privada (id_rsa
) é o que fica com você e é como você se identifica.ssh-copy-id user@server
substituindo user por seu usuário e servidor remoto pelo nome DNS ou endereço IP da máquina. Ele solicitará sua senha SSH, digite-a e, se tudo for concluído com êxito, você poderá acessar a máquina viassh user@server
sem precisar de uma senha.Referências
fonte
ssh-keygen
siga as instruções na tela, em seguida, digitessh-copy-id user@server
substituindo usuário com o usuário remoto e servidor com a máquina remotassh-copy-id "[email protected] -p 1234"
.Digite os seguintes comandos:
ssh-keygen
Pressione a Entertecla até receber a solicitação
ssh-copy-id -i root@ip_address
(Uma vez solicitará a senha do sistema host)
ssh root@ip_address
Agora você deve conseguir fazer login sem nenhuma senha.
fonte
A maneira como eu costumo fazer isso é a seguinte:
ssh-keygen -t rsa
(Quando for solicitada uma senha, deixe em branco)
Então:
cat ~/.ssh/id_rsa.pub | ssh username@hostname 'cat >> .ssh/authorized_keys'
(Isso requer que a pasta .ssh esteja no diretório inicial no nome do host de destino, com o arquivo allowed_keys)
Obviamente, substitua o nome de usuário pelo nome de usuário desejado e o nome de host pelo nome de host ou endereço IP desejado.
Depois disso, apenas SSH para essa caixa como você está acostumado.
fonte
touch
echmod
na resposta de Rinzwind?.ssh/authorized_keys
arquivo para 0600 ou isso não vai funcionarEu normalmente uso
sshpass
para isso, instalosudo apt-get install sshpass
e uso assimfonte
sshpass
é um hack muito útil nos casos em que você não pode alterar o método de autenticação no servidor remoto!https://help.ubuntu.com/community/SSH/OpenSSH/Configuring#disable-password-authentication
fonte
PasswordAuthentication no
todos os usuários? Caso contrário, como faço para desativá-lo para usuários normais, mas o deixo inalterado para root enquanto estou testando? Eu realmente não quero me enganar e me trancar completamente.Permission denied (publickey).
comPasswordAuthentication no
. O que devo fazer? Eu mudoPasswordAuthentication no
em outro host?Esta solução é especificamente para usuários que usam o Windows para ssh em suas máquinas remotas, incluindo imagens em nuvem na AWS Cloud e GCE Cloud
aviso Legal
Recentemente, usei esta solução para fazer login remoto de novas imagens de vm implantadas no GCE.
Ferramentas usadas:
puttygen
puttygen baixarwinscp
download winscpEtapas para executar:
Como fazer isso:
1. Gere uma chave / par ou use a chave privada existente
Se você possui uma chave privada:
Abra
puttygen
, pressione o botão carregar e selecione seu*.pem
arquivo de chave privada ( ).Se você não possui uma chave privada:
puttygen
,(da fonte 1, link fornecido abaixo)
2. Crie um novo arquivo 'allowed_keys' (com
notepad
)Copie os dados da chave pública da seção "Chave pública para colar no arquivo OpenSSH allowed_keys" do PuTTY Key Generator e cole os dados da chave no
authorized_keys
arquivo.Verifique se há apenas uma linha de texto nesse arquivo.
3. Carregue a chave no servidor Linux
Carregue o arquivo allowed_keys no diretório inicial na máquina remota.
4. Defina as permissões apropriadas
Criar
.ssh
diretório (se não existir)Copie o
authorized_keys
arquivo para o.ssh
diretório(isso substituirá qualquer
authorized_keys
arquivo existente , observe isso).Se o arquivo existir, basta adicionar o conteúdo desse arquivo ao arquivo existente.
Execute comandos para definir permissões:
Agora você poderá
ssh
acessar a máquina remota sem inserir credenciais todas as vezes.Leitura adicional:
Gerando e carregando chaves SSH no Windows
Autenticação de certificados de chaves OpsenSSH PEM PUB CRT
fonte
Se você criar um par de chaves público / privado e efetuar login usando nossa chave pública recém-criada, não precisará digitar sua senha. Dependendo da configuração do seu conjunto de chaves e / ou agente ssh, pode ser necessário proteger sua chave com uma senha.
Aqui está um dos muitos breves tutoriais para você. É de importância crucial para a segurança desse método, que a chave privada gerada permaneça privada! Você nunca deve compartilhá-lo com ninguém ou permitir o acesso em qualquer capacidade.
Este comando gera uma chave razoavelmente forte em
~/.ssh/
:Em
~/.ssh/
você encontrará sua chave pública comoid_rsa.pub
. Seu conteúdo deve ser anexado aoauthorized_keys
arquivo do servidor transportando-o por uma mídia transportável (pen drive) ou ativando brevemente a autenticação por senha no servidor, usandossh-copy-id ~/.ssh/id_rsa.pub username@server
e desativando-o novamente.Se você optar por proteger sua chave com uma frase secreta (na primeira etapa), poderá usar
ssh-agent
o chaveiro Ubuntu para proteger esse farse localmente, para que você não precise digitá-lo o tempo todo.fonte
Para fazer algumas adições:
Por padrão, o Mac não possui
ssh-copy-id
, você deverá instalá-lo:encontre mais aqui: https://github.com/beautifulcode/ssh-copy-id-for-OSX
se você fez um encaminhamento de porta, o comando deve ser assim:
observe que as aspas são necessárias.
fonte
Login / cópia remota sem fornecer uma senha
Os aplicativos
ssh
escp
para logon remoto e cópia remota, respectivamente, permitem a comunicação com um host remoto sem fornecer uma senha. Isso requer que você siga um procedimento de autenticação como o descrito abaixo. Por cliente, entendemos a máquina em que você está sentado e por servidor, a máquina na qual você deseja fazer logon sem fornecer uma senha. As etapas do procedimento de autenticação são:$HOME/.ssh
.$HOME/.ssh/authorized_keys
ou$HOME/.ssh/authorized_keys2
ao servidor.Existem três tipos diferentes de protocolos de autenticação. Você especifica o tipo ao executar o ssh-keygen:
chmod 0700
garantir que esse arquivo não seja legível para outras pessoas) e identity.pub (chave pública).ssh-keygen -t rsa
e resulta em arquivosid_rsa
(chave privada) eid_rsa.pub
(chave pública)ssh-keygen -t dsa
e resulta em arquivosid_dsa
(chave privada) eid_dsa.pub
(chave pública)Ao executar o ssh-keygen, você pode confiar nas respostas padrão (o que implica que você não fornece uma senha). Isso torna toda a configuração simples, mas também insegura.
Você pode especificar o tipo de chave a ser usado por uma opção para ssh ;
ssh -1
força o uso de chaves RSA1 (versão do protocolo 1), enquantossh -2
força o ssh a experimentar apenas as chaves RSA ou DSA (versão do protocolo 2). Nos exemplos abaixo, geramos e instalamos chaves RSA1 e DSA no host remoto, para que você tenha mais flexibilidade. Você pode criar um arquivo de configuração em seu.ssh
diretório com a linhaIsso faz com que o ssh tente uma conexão RSA1 (protocolo versão 1) antes do RSA / DSA (protocolo versão 2).
Usando chaves RSA1
Usando chaves DSA
Isso é tudo o que você precisa fazer se não tiver usado uma senha durante a geração das chaves. Você pode testar a conexão executando o ssh $ remote e veja se consegue efetuar login sem fornecer uma senha (pode ser necessário usar
-1
ou-2
como opções para o ssh ). Obviamente, o procedimento pode ser repetido para qualquer máquina na qual você deseja fazer logon.Se você usou uma senha, precisará executar o programa
ssh-agent
para iniciar um shell especial, seguido dessh-add
para registrar sua combinação de chave / senhasshd
. Consulte as páginas de manual desses programas para obter mais informações.Um script para automatizar conexões sem senha:
ssh-no-password.sh
copiado de: http://folk.uio.no/hpl/scripting/doc/ssh-no-password.html
fonte
Gostaria de adicionar uma resposta para aqueles que acharem que devem digitar a senha, mesmo que tenham lido todas as respostas aqui, porque você definiu o IdentitiesOnly como sim. E a resposta aqui pode economizar muito tempo para gerenciar várias chaves, sendo chaves para git ou servidor.
Depois de gerar a chave e copiá-la para o servidor:
Eu achei que não funcionou.
Depois fui verificar o
~/.ssh/config
arquivo no cliente, vi isso na parte inferior:Então eu adiciono isso acima:
Eu posso fazer login entrando
ssh somename
.Em seguida, você pode adicionar várias chaves ssh usando seus nomes favoritos e você só precisa adicionar as configurações como as quatro linhas acima ao arquivo de configuração.
Host é o nome que você gostaria de inserir quando conectar o servidor posteriormente; o HostName é o ip do servidor; Usuário é o nome de usuário que você efetua login no servidor; e o arquivo de identidade é o arquivo em que você armazena a chave que você gerou.
fonte