Como você configura o ssh para autenticar um usuário usando chaves em vez de um nome de usuário / senha?
34
Para cada usuário: eles devem gerar (em sua máquina local) seu par de chaves usando ssh-keygen -t rsa
(eles rsa
podem ser substituídos por dsa
ou rsa1
também, embora essas opções não sejam recomendadas). Em seguida, eles precisam colocar o conteúdo de sua chave pública ( id_rsa.pub
) ~/.ssh/authorized_keys
no servidor que está conectado.
Na verdade, prefiro ssh-copy-id , um script encontrado no * nix por padrão (também pode ser instalado no Mac OS X com bastante facilidade) que faz isso automaticamente para você. Na página do manual:
fonte
Hum, não entenda. Basta criar uma chave e começar. :) COMO FAZER Além disso, você pode proibir o login via senha. Por exemplo, em / etc / ssh / sshd_config:
fonte
Isso é bastante simples de fazer - há uma explicação simples aqui .
Os pontos principais são:
ssh-keygen
na sua máquina. Isso irá gerar chaves públicas e privadas para você.~/.ssh/id_rsa.pub
) na~/.ssh/authorized_keys
máquina remota.É importante lembrar que isso concederá a qualquer pessoa que tenha acesso à chave privada da sua máquina o mesmo acesso à máquina remota; portanto, ao gerar o par de chaves, você pode optar por inserir uma senha aqui para obter segurança extra.
fonte
Para usuários do Windows configurar massa de vidraceiro
fonte
Para resumir o que os outros disseram, configurar chaves SSH é fácil e inestimável.
Na máquina que você será SSHing de que você precisa para gerar seu par de chaves:
Basta pressionar enter, onde estiver anotado, e digitar uma senha quando solicitado - idealmente, isso é diferente da sua senha de login normal no host atual e nos quais você estará usando o SSH.
Em seguida, você precisa copiar a chave que você acabou de gerar para o host que deseja SSH para . A maioria das distribuições Linux tem uma ferramenta
ssh-copy-id
para fazer isso:Se a sua distribuição não tiver, copie a chave para o host de destino e adicione-a ao
.ssh/authorized_keys
arquivo (possivelmente existente) :Por fim, para obter o máximo benefício das chaves SSH, convém executar um agente SSH. Se você usa um ambiente de área de trabalho (Gnome, KDE etc.), basta fazer o logout e o login iniciará um agente SSH para você. Se não, você pode adicionar o seguinte ao seu arquivo shell RC (
.bashrc
,.profile
, etc.):fonte
Isso é planejado como uma lista de verificação. Se alguém o seguir ponto a ponto, as dicas mais comuns para logins sem senha devem ser cobertas. A maioria desses pontos é mencionada em outro lugar; isso é uma agregação.
Deve haver um
~/.ssh
diretóriochmod 700
em cada máquina na conta que originará ou receberá as conexões.A chave (privada) deve ser gerada sem uma senha, ou pode ser iniciado um agente que conterá uma versão descriptografada de uma chave portadora de senha para que os clientes possam usar. Inicie o agente com
ssh-agent $SHELL
. É a$SHELL
parte que demorei a encontrar. Consulte a página do manual, pois há vários detalhes se você deseja usar um agente.Não esqueça que, por padrão, chaves fracas (<2048 bits DSA) não são aceitas pelas versões recentes do sshd.
O seguinte deve ser feito na máquina do lado do cliente para originar uma conexão.
Sua chave privada deve ser colocada
~/.ssh/id_rsa
ou~/.ssh/id_dsa
conforme apropriado. Você pode usar outro nome, mas deve ser incluído na opção -i no comando ssh na máquina de origem para indicar explicitamente a chave privada.Sua chave privada deve ser
chmod 600
.Verifique se a sua pasta pessoal está
chmod 700
.Agora, para permitir que uma máquina receba uma solicitação. Um modelo comum é o local em que um administrador fornece acesso a uma máquina que você não possui (como hospedagem compartilhada na web). Portanto, a idéia com o ssh é que você ofereça sua chave pública a quem estiver fornecendo a conta. É por isso que você geralmente não coloca chaves privadas na máquina que recebe solicitações. Mas, se você deseja que esta máquina execute também ssh de saída, você deve tratá-la como uma máquina de origem com as etapas acima.
~/.ssh/authorized_keys
na conta que receberá as conexões. Você também pode colocar aqui outras chaves que têm permissão para se conectar por meio desta conta. Uma coisa particularmente complicada se você estiver no vi e colando a chave no arquivo do buffer de colagem no PuTTY é a seguinte: a chave começa com um "ssh-". Se você não estiver no modo de inserção, o primeiro "s" colocará vi no modo de inserção e o restante da tecla ficará bem. Mas você estará perdendo um "s" no início da chave. Levou dias para eu encontrar isso.chmod 600 ~/.ssh/authorized_keys
. Deve ser pelo menos gw.fonte
Como já foi dito, seus usuários devem criar pares de chaves para si mesmos nas máquinas clientes com o ssh-keygen e adicionar sua chave pública a ~ / .ssh / allowed_keys na máquina na qual desejam fazer login.
Para informações mais detalhadas, recomendo o SSH, o Secure Shell .
fonte
Há bons conselhos aqui, então não vou repeti-los. Depois de configurar um servidor para permitir que você faça logon com chaves, você pode configurar outros para fazer o mesmo com este liner:
Basta fazer o cd no diretório inicial, definir a variável remote como um ou vários nomes de servidores e executar várias operações ao mesmo tempo. A senha solicitada será a sua senha ssh para o servidor remoto. Obviamente, você pode usar uma versão simplificada sem o loop for:
Lembre-se: copie apenas suas chaves públicas. Você não quer que suas chaves privadas estejam em algum servidor em que qualquer pessoa com sudo possa copiá-las e forçar sua senha com força bruta.
fonte