Eu entendo como posso colocar minha chave ssh pública em chaves autorizadas de outras máquinas, ssh-copy-id
desde que eu tenha o nome de usuário/senha das máquinas remotas.
Como é possível o inverso? Obter a chave pública de alguma máquina remota (nenhuma senha será necessária porque é pública) e colocá-la em minhas próprias chaves autorizadas (novamente, nenhuma senha é necessária, pois é minha).
Responder1
ssh ${remote_host} cat .ssh/id_rsa.pub | tee -a $HOME/.ssh/authorized_keys
Responder2
Você está combinando dois tipos diferentes de chaves SSH. Embora sejam semelhantes em estrutura, eles têm uma finalidade muito diferente.
Sua chave pública é o que poderia ser chamado dechave do usuário: embora sejapúblico, ou seja, não há necessidade de manter isso em segredo, não éPublicadosautomaticamente por qualquer meio. Se quiser colocá-lo em sua página da web, claro, você pode fazer isso. Mas você deve fazer isso sozinho.
As chaves por máquina, por outro lado, são chamadaschaves de host. Eles são trocados automaticamente no login, para que possam ser consideradosPublicados. Mas as chaves do host não vão para um authorized_keys
arquivo: elas vão para dentro known_hosts
. Apenas ter a chave do host de alguma máquina não dará nenhum tipo de acesso a ninguém: apenas permite que seu cliente SSH confirme que a máquina é a mesma de antes quando você se conecta a ela.
Se o administrador do sistema optar por ativar HostbasedAuthentication
e /etc/ssh/sshd_config
a chave do host remoto estiver no /etc/ssh/ssh_known_hosts
arquivo de todo o sistema, será possível adicionar o nome do host remoto /etc/hosts.equiv
ou /etc/ssh/shosts.equiv
permitirtodosnesse host remoto para fazer logon nas contas correspondentes no host local, sem inserir uma senha. Se o administrador do sistema também definir IgnoreRhosts
como no
, então você, como usuário comum, poderá permitir que um usuário específico em um host remoto específico acesse sua conta no host local sem uma senha, colocando a chave do host do host remoto em seu ~/.ssh/known_hosts
e o username@hostname em seu ~/.rhosts
ou ~/.shosts
. Mas este método de autenticação está desabilitado por padrão.
(Por que dois arquivos como ~/.shosts
e ~/.rhosts
, você acha? Bem, é porque o arquivo foi usado pelas antigas ferramentas // / .rhosts
não criptografadas , e o SSH foi originalmente projetado como um substituto imediato para ele. Você usaria ou se você deseja permitir o acesso por meio de ferramentas e e ou se deseja permitir apenas o acesso SSH.)rsh
rlogin
rexec
rcp
.rhosts
hosts.equiv
rsh
ssh
.shosts
shosts.equiv
Responder3
Usando ssh-keyscan ou automaticamente ao conectar-se a um host desconhecido que adicionará a chave aknown_hosts para você. Se quiser fazer isso manualmente você pode usar o comando abaixo:
ssh-keyscan hostname >> ~/.ssh/known_hosts