Como as chaves públicas são “enviadas” para os servidores, e como as chaves privadas são “usadas” para o SSH?

11

Existem duas máquinas Linux, A e B. Scripts em execução em A precisam ser capazes de SSH em B. Assim, A gera uma chave pública (provavelmente um ssh-keygen -gerado id_rsa.pub ) e, em seguida, usa seus respectivos chave privada (novamente, provavelmente id_rsa ) para fazer essa conexão SSH.

Se alguma coisa que eu disse acima estiver incorreta ou errada, comece por me corrigir!

Supondo que estou mais ou menos no alvo:

  • Como A “oferece” B sua chave pública ( id_rsa.pub )? Isso tem que ser um processo manual ou pode ser automatizado? Se manual, qual é o processo? Se automatizado, qual é o comando? Quando B "pega" essa chave pública, para onde ela vai ou fica armazenada?
  • Ao iniciar a conexão SSH para B, como A “usa” sua chave privada ( id_rsa ) como parte dessa conexão?
por user3178622 19.08.2015 / 17:28

2 respostas

5

ssh-keygen gera as chaves pública e privada, que inicialmente residem apenas localmente. Dar a chave pública a outro host é algo que o usuário precisaria fazer manualmente, seja enviando-o para alguém responsável pelo servidor B, ou se você tiver uma conta com uma senha, você poderia fazer o login e colocá-lo lá. Para permitir login sem senha no servidor B, você precisaria adicionar sua chave pública ao arquivo ~ / .ssh / authorized_keys no servidor B (uma chave pública por linha, pode haver qualquer número de chaves neste arquivo). Existe um comando do linux ssh-copy-id que irá copiar o ID para você e colocá-lo no arquivo.

Por padrão, o ssh usará o arquivo ~ / .ssh / id_XXX como sua chave privada. XXX pode ser rsa, dsa ou qualquer protocolo para o qual uma chave foi gerada. IIRC, dsa é antigo e não deve ser usado. Se você quiser usar uma chave privada diferente, você pode especificá-la no seu comando ssh usando -i . Contanto que a chave privada que está sendo usada corresponda a uma chave pública na máquina remota (no arquivo authorized_keys da conta do usuário na qual você está efetuando login), você não precisará fornecer uma senha.

    
por 19.08.2015 / 17:55
3

There are two Linux machines, A and B. Scripts running on A need to be able to SSH into B. So A generates a public key (probably an ssh-keygen-generated id_rsa.pub), and then uses its respective private key (again, probably id_rsa) to make that SSH connection.

If anything I’ve said above is incorrect or misled, please begin by correcting me!

Assuming I’m more or less on target:

sim

mas B precisa da chave pública de A para ser listada no arquivo authorized_keys de B para que A possa se conectar a B

também você pode deletar id_rsa.pub e ssh para B e ele ainda funcionará, porque a chave pública é gerada como nova em cada conexão ssh e não é armazenada em nenhum id_rsa.pub

How does A “give” B its public key (id_rsa.pub)? Does this have to be a manual process, or can it be automated? If manual, what’s the process? If automated, what’s the command?

manual - algo como

de A -

cat ~/.ssh/id_rsa.pub | ssh USER@HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

ou ainda mais manualmente, para quebrar o comando

A $ cat id_rsa.pub | ssh user@host 'cat>~/a.a'

depois em B, certifique-se de que ~ / .ssh existe e faça cat a.a >> ~/.ssh/authorized_keys

e você pode cat authorized_keys de B antes e depois para ter certeza de que a chave está listada.

Ou você pode enviar e-mail id_rsa.pub para uma conta de e-mail, em seguida, a partir de B, B pode verificar o e-mail e acrescentar o conteúdo de id_rsa.pub em seu arquivo authorized_keys

automaticamente

O comando ssh-copy-id

Você precisa ser capaz de ssh, então você precisa de acesso por senha

Em vez de fazer ssh user @ host, você faz o ssh-copy-id user @ host e é solicitada uma senha, você a insere, você está dentro, copia a chave pública. E da próxima vez que você fizer o ssh user @ host, ele usará a chave.

When B "gets" this public key, where does it go or get stored?

B's ~ / .ssh / authorized_keys

When initiating the SSH connection to B, how does A “use” its private key (id_rsa) as part of that connection?

bem, eu não sei muito sobre isso, mas o que está criptografado com uma chave pode ser descriptografado com a outra, e identificar-se é um pouco diferente de enviar dados. pode ser algo sobre uma chave temporária também.

    
por 19.08.2015 / 18:23