Autenticação em equipamentos de rede por SSH usando chaves públicas

Molho de chaves

Por padrão, os engenheiros se conectam ao equipamento de rede usando um nome de usuário e senha. Usando o Telnet, as credenciais do usuário são transmitidas em texto não criptografado e por SSH, criptografadas. Para não transmitir a parte secreta pela rede, é usada a autenticação de chave pública. Com essa autenticação, a chave pública do usuário é pré-atribuída ao usuário no equipamento. A chave privada não é transmitida pela rede.

Este guia o ajudará a começar a usar rapidamente chaves públicas para autenticação ao conectar-se a equipamentos de rede usando o protocolo SSH. O guia é aplicável para Windows e Mac OS X. Tentei torná-lo o mais simples e informativo possível. Não está sobrecarregado, mas responde às perguntas básicas:





Também examinei os tópicos "doloridos":

  • Conversão de chave entre OpenSSH <==> SecureCRT <==> PuTTY.
  • Usando diferentes pares de chaves públicas para diferentes equipamentos. Uma chave é boa, mas não aplicável na realidade. Diferentes clientes ou equipamentos requerem diferentes pares de chaves públicas (algumas com senha e outras sem).
  • Usando o MAC OS X nativo (nativo) para trabalhar com chaves públicas.
  • O guia também deve ajudar a usar o Ansible com equipamentos de rede, pois o Ansible usa o OpenSSH com autenticação de chave pública por padrão.

90% do material apresentado é testado em equipamentos reais.


Introdução


Além da autenticação de senha padrão (senha / teclado) no protocolo SSH, também há autenticação de chave pública (RSA).

Para referência
RSA (https://ru.wikipedia.org/wiki/RSA) — . (public key) (private key). : . . , , .

A autenticação usando chaves RSA consiste em várias etapas:


Por que apenas RSA? Por que não um DSA? Infelizmente, não encontrei a resposta para esta pergunta (e realmente não a procurei). Mas oficialmente, apenas o RSA é suportado em equipamentos da Cisco.

Guia de configuração do Secure Shell, Cisco IOS Release 15E:

Guia de configuração do Secure Shell, Cisco IOS Release 15E
Restrições para o Secure Shell Versão 2 Suporte A
geração de chaves Rivest, Shamir e Adleman (RSA) é um requisito do servidor SSH. Os dispositivos que atuam como clientes SSH não precisam gerar chaves RSA.

Tentativa de inserir dados chave do DSA:

CSR-1(conf-ssh-pubkey-data)#exit
%SSH: Only ssh-rsa type is supported
CSR-1(conf-ssh-pubkey-user)#


Criando uma chave pública RSA


Um par de chaves RSA pode ser criado usando vários utilitários: SecureCRT, PuTTYgen ou qualquer outro software. Ao criar uma chave, você pode definir a senha (proteção por senha com uma chave).


Geração de pares RSA no SecureCRT


SecureCRT -> Ferramentas -> Criar Chave Pública ...:


Um pouco de teoria → o botão "Next>":


Tipo de certificado RSA / DSA → Selecione RSA → botão "Próximo>":


Senha de criptografia da chave secreta (opcional, você pode deixá-la em branco e não criptografar) + Comentar → botão "Avançar>":


Escolha o comprimento da chave (no SecureCRT versão 6.1.0, o comprimento máximo da chave é 2048 bits, na versão 8.5.4 - 16 384 bits):




Geração de teclas → Botão "Próximo>": Para gerar números aleatórios, você precisa mover o mouse dentro da janela.



Salvando um par de chaves → Selecionando um local de armazenamento → Selecionando um formato para uma chave salva (formato VanDuke Private, OpenSSH legado, OpenSSH novo) → botão "Concluir":



O SecureCRT pergunta se essa chave é a chave padrão do SecureCRT:



Geração de pares RSA no PuTTYgen


Você pode fazer o download do PuTTYgen aqui: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html .

Inicie o PuTTYgen:


Selecione os parâmetros (tipo de par: RSA; dimensão do bit de chave: 2048; opcionalmente defina Senha (proteção de senha com uma senha)) → Gerar:


Para garantir números aleatórios, ele pede para mover o mouse dentro da janela. Esta é uma proteção contra números pseudo-aleatórios.


Salvar chaves RSA → botão "Salvar chave privada":


Observação: as chaves RSA armazenadas em formato privado em um software não podem ser usadas em software de outro fabricante. Ou seja, um par de chaves RSA criadas no PuTTYgen e salvas no formato Putty Private Key não é adequado para uso no SecureCRT e vice-versa. O PuTTY suporta apenas o formato Putty Private Key. Uma solução universal para distribuição de chaves é converter chaves para o formato OpenSSH (consulte o link 2: “Conversão de Putty para SecureCRT com chaves de autenticação”). Desde SecureCRT trabalha livremente com o formato OpenSSH. E o software PuTTYgen converte o formato OpenSSH no formato Putty Private Key.


Convertendo uma chave RSA do formato Putty Private Key (PuTTY) para o formato OpenSSH (SecureCRT)


Para usar chaves RSA no SecureCRT que são geradas no PuTTYgen e salvas no formato Putty Private Key (* .ppk), exportamos-as usando PuTTYgen no formato OpenSSH:

  1. Inicie o PuTTYgen.
  2. Carregamos a chave RSA existente no formato Putty Private Key (* .ppk) → O botão "Carregar".
  3. Salve o arquivo de chave pública → “Salvar chave pública”.
  4. Exportamos a chave secreta para o formato OpenSSH: menu PuTTYgen → “Conversões” → “Exportar chave OpenSSH”.
  5. Usamos arquivos OpenSSH no SecureCRT. O arquivo com a chave pública possui a extensão .pub, o arquivo com a chave privada não possui extensão.


Convertendo uma chave RSA do formato VanDyke Private Key (SecureCRT) para Putty Private Key (PuTTY)


Para usar chaves RSA no PuTTY que são geradas no SecureCRT e salvas no formato de chave privada VanDyke (arquivo de chave pública * .pub, arquivo de chave secreta *. (Sem extensão)), exporte-as usando o SecureCRT no formato OpenSSH e, em seguida, usando PuTTYgen, exportamos para o formato Putty Private Key (* .ppk):

  1. Inicie o SecureCRT.
  2. Menu “Ferramentas” → “Converter chave privada para o formato OpenSSH ...”
  3. Selecione o arquivo de origem com as chaves da VanDyke Private Key.
  4. Salvamos as chaves do OpenSSH com um novo nome.
  5. Inicie o PuTTYgen.
  6. Carregamos a chave RSA existente no formato OpenSSH (*.): Menu PuTTYgen → “Conversões” → “Import key”.
  7. Salve o arquivo no formato Putty: “Salvar chave privada”.


Gerando chaves públicas no MAC OS X usando o sistema operacional


Usaremos o utilitário ssh-keygen embutido (man ssh-keygen).
Geramos uma chave RSA com um comprimento de 2048 bits com o nome da chave, o caminho para a pasta com o local de armazenamento da chave:

ssh-keygen -b 2048 -t rsa -c "Lab router R4" -f /Users/ArtemiySP/Documents/python/r4

No tempo de execução, o programa solicitará uma senha para proteger a chave RSA:

artemiy-2:Downloads ArtemiySP$ ssh-keygen -b 2048 -t rsa -C "Lab router R4" -f /Users/ArtemiySP/Documents/python/r4
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/ArtemiySP/Documents/python/r4.
Your public key has been saved in /Users/ArtemiySP/Documents/python/r4.pub.
The key fingerprint is:
SHA256:WdT47SFvgGI7danxX94p8/cO3uyU12SB3ipkc7nHxzA Lab router R4
The key's randomart image is:
+---[RSA 2048]----+
|          .o     |
|         .. . .  |
|          .o + . |
|        oo+ B = .|
|       .S+ O OEoo|
|        o + + B*+|
|         . . =.*O|
|            .+o**|
|              =+O|
+----[SHA256]-----+
artemiy-2:Downloads ArtemiySP$

Geramos uma chave RSA com um comprimento de 4096 bits para indicar o nome da chave, o caminho para a pasta com o local de armazenamento da chave, definimos a senha explicitamente nos parâmetros de geração de chave (-N "cisco"):

artemiy-2:Downloads ArtemiySP$ ssh-keygen -b 4096 -t rsa -C "Lab router R5" -N "cisco" -f /Users/ArtemiySP/Documents/python/r5
Generating public/private rsa key pair.
Your identification has been saved in /Users/ArtemiySP/Documents/python/r5.
Your public key has been saved in /Users/ArtemiySP/Documents/python/r5.pub.
The key fingerprint is:
SHA256:NraLRMqB4qmA8qNjKdpBBt1JBw8Osf/3GfuB2k1R+zY Lab router R5
The key's randomart image is:
+---[RSA 4096]----+
|  o.+..          |
| . * =           |
|. o + .       .  |
| . o         . . |
|. + o . S   . .  |
|o+.. = o o . . . |
|+oo o o o o o  Eo|
|*=.. . o = * . ..|
|Boo.  . o =.o    |
+----[SHA256]-----+
artemiy-2:Downloads ArtemiySP$

Parâmetros de geração de chave que não são recomendados: uma chave não confiável com um comprimento de 1024 bits, indicando o nome da chave, o caminho para a pasta com o local de armazenamento da chave, definimos a senha explicitamente nos parâmetros de geração de chave (-N "" - sem senha):

artemiy-2:Downloads ArtemiySP$ ssh-keygen -b 1024 -t rsa -C "Lab router R6" -N "" -f /Users/ArtemiySP/Documents/python/r6
Generating public/private rsa key pair.
Your identification has been saved in /Users/ArtemiySP/Documents/python/r6.
Your public key has been saved in /Users/ArtemiySP/Documents/python/r6.pub.
The key fingerprint is:
SHA256:LEcfgN+58TYMDv4MpBA2FGCWc2aFiY+SxWBf7pRViWs Lab router R6
The key's randomart image is:
+---[RSA 1024]----+
|.++=o*.o+..      |
|.oB % +. o       |
| o X * .o...     |
|o . =  E+.=.     |
| .   oo+So.*     |
|      .oo o =    |
|         + . .   |
|          o      |
|                 |
+----[SHA256]-----+
artemiy-2:Downloads ArtemiySP$

Portanto, criamos três chaves com os nomes das chaves e a localização das chaves (por padrão, todas as chaves são armazenadas em / Users / [Username 028 / .ssh).

Por padrão, ao conectar via SSH com autenticação por chave pública, todas as chaves públicas são armazenadas em sequência, armazenadas na pasta /Users/[Username†/.ssh.

Chave R6: renomeie a chave para “id_rsa” (por padrão, o nome do arquivo de chave gerado é “id_rsa”) e transfira-o para a pasta com as chaves SSH (~ / .ssh /) (ou seja, executaremos todas as etapas para que a chave R6 seja usada como principal) chave de conexão SSH padrão):

Converta a chave pública OpenSSH para o formato RFC4716 (exporte para o Cisco IOS):

https://serverfault.com/questions/706336/how-to-get-a-pem-file-from-ssh-key-pair
ssh-keygen -f ~/Documents/python/r4.pub -e -m RFC4716
ssh-keygen -f ~/Documents/python/r5.pub -e -m RFC4716
ssh-keygen -f ~/.ssh/id_rsa.pub -e -m RFC4716


Usando uma chave pública no equipamento


Como em vários equipamentos para vincular uma chave pública a um usuário?

O processo de vincular uma chave pública a um usuário não é padrão e varia de equipamento para equipamento; portanto, são dados exemplos para cada tipo de equipamento mais frequentemente usado na rede.


Cisco IOS XE, Catalyst (da versão 15.1 e superior), IOS


  1. Já existe um usuário no dispositivo.
  2. Nas configurações de SSH (ip ssh pubkey-chain) do usuário (nome de usuário cisco), especifique a chave pública (string de chave):
    CSR-1#conf t
    Enter configuration commands, one per line.  End with CNTL/Z.
    CSR-1(config)#ip ssh pubkey-chain 
    CSR-1(conf-ssh-pubkey)#username ssh-putty
    CSR-1(conf-ssh-pubkey-user)#key-string 
    CSR-1(conf-ssh-pubkey-data)#$QAAAQEAnPbynT1+2rjlyqP4viSPdTVDFLSHzWjJnAwy     
    CSR-1(conf-ssh-pubkey-data)#$NCfaqvMTPruCgG5096q8lO0ntURmNgmfMEQPOgb8weF     
    CSR-1(conf-ssh-pubkey-data)#$AtMQYk7WFM+5iBnOQ32UAHNavCUA7YFEpAdOQO4W/qB     
    CSR-1(conf-ssh-pubkey-data)#$SlOLy+PQ47jDUINBnuUeHd8ZXyzXxWglzSvqtwMEXBW     
    CSR-1(conf-ssh-pubkey-data)#$VoUTBYbJ45DmFa93P50qf494ujaAsTbYyJ/GBzJUTK/     
    CSR-1(conf-ssh-pubkey-data)#$UADAkNGxQARfOfHZWiIYb3rif6h6hfwwVUZS/Tw==       
    CSR-1(conf-ssh-pubkey-data)#exit
    CSR-1(conf-ssh-pubkey-user)#exit
    CSR-1(conf-ssh-pubkey)#exit
    CSR-1(config)#exit
    CSR-1#exit
    
    CSR-1#show running-config | inc ssh
    username ssh-public-key secret 5 $1$ebjc$EYgwMFQXPPiywFVn6rl7t.
    username ssh-putty privilege 15 secret 5 $1$vIhh$nM8iCeBKmLyVK4hA6./h4.
    ip ssh pubkey-chain
       key-hash ssh-rsa D4E9AD62F7F6265EAAB3FB8778477612
      username ssh-public-key
       key-hash ssh-rsa C331DEE821A84681A4A7B1862C100D16
      username ssh-putty
       key-hash ssh-rsa F32BEB60290EA75D151447C0D42D2A99
       key-hash ssh-rsa 5432C275B363B646E02D3BA7E8D865B7
    CSR-1#
    


Cisco ASA


LAB-ASA5516-X-01/pri/act# conf t
LAB-ASA5516-X-01/pri/act(config)# username artemiy password artemiy privilege $
LAB-ASA5516-X-01/pri/act(config)# username artemiy attributes 
LAB-ASA5516-X-01/pri/act(config-username)# ssh authentication publickey ?

username mode commands/options:
  WORD  Raw SSH-RSA public key
LAB-ASA5516-X-01/pri/act(config-username)# ssh authentication publickey AAAAB3$

Nós inserimos a chave inteira em uma linha (formato OpenSSH).


Roteadores e switches Huawei


[R1]rsa peer-public-key test-key1 encoding-type pem 
Enter "RSA public key" view, return system view with "peer-public-key end".
NOTE: The number of the bits of public key must be between 769 and 2048.
[R1-rsa-public-key]public-key-code begin 
Enter "RSA key code" view, return last view with "public-key-code end".
[R1-rsa-key-code]---- BEGIN SSH2 PUBLIC KEY ----
[R1-rsa-key-code]Subject: Subject
[R1-rsa-key-code]Comment: " Subject@Subject.local"
[R1-rsa-key-code]ModBitSize: 2048
[R1-rsa-key-code]AAAAB3NzaC1yc2EAAAADAQABAAABAQC4YLFhPqfsz4a6PUpZOtvm6zGn5TWOVMnx
[R1-rsa-key-code]lTH5hr/u+aYnoM2XnDTu4Ul1iB8MMPLVKXzV4LgYhaFcU1rz2/yYhTKIwbiQTHof
[R1-rsa-key-code]63fJjyWwkvyBuVZTSKh4b2pfoF2mXgdJzzRmUaiRrZZUVJWsX+CbgtKQuktG7sTK
[R1-rsa-key-code]2eguHwdfhilbOAsUaL0/q39Y0aTAMnLMtn0m5r6MD/UopQPI3Fxm1L9azJ7zYIZa
[R1-rsa-key-code]yI43Solg0AOupPl8FHFI9Cxq81/uZRACx5lAyuObaQ4/t1Rdh3CAJj1qwfZjZFTP
[R1-rsa-key-code]VdJxwTDxwfkpOzMD193M0ThOSrgfWe336Q9F3jbSWrEYUQDX8ew7
[R1-rsa-key-code]---- END SSH2 PUBLIC KEY ----
[R1-rsa-key-code]public-key-code end
[R1-rsa-public-key]peer-public-key end 
[R1]display rsa peer-public-key 

=====================================
    Key name: test-key1
=====================================
Key Code:
---- BEGIN SSH2 PUBLIC KEY ----
AAAAB3NzaC1yc2EAAAADAQABAAABAQC4YLFhPqfsz4a6PUpZOtvm6zGn5TWOVMnx
lTH5hr/u+aYnoM2XnDTu4Ul1iB8MMPLVKXzV4LgYhaFcU1rz2/yYhTKIwbiQTHof
63fJjyWwkvyBuVZTSKh4b2pfoF2mXgdJzzRmUaiRrZZUVJWsX+CbgtKQuktG7sTK
2eguHwdfhilbOAsUaL0/q39Y0aTAMnLMtn0m5r6MD/UopQPI3Fxm1L9azJ7zYIZa
yI43Solg0AOupPl8FHFI9Cxq81/uZRACx5lAyuObaQ4/t1Rdh3CAJj1qwfZjZFTP
VdJxwTDxwfkpOzMD193M0ThOSrgfWe336Q9F3jbSWrEYUQDX8ew7
---- END SSH2 PUBLIC KEY ----
aaa
local-user jet privilege level 15
 local-user jet service-type telnet terminal ssh http
ssh user jet assign rsa-key test-key1

Tipos de formatos de chave importados para a Huawei:

“O SecureCRT e PuTTY geram chaves RSA no formato PEM.”

rsa peer-public-key test-key1 encoding-type pem

"O OpenSSH gera chaves RSA no formato OpenSSH."

rsa peer-public-key test-key1 encoding-type openssh

"O OpenSSL gera chaves RSA no formato DER."

rsa peer-public-key test-key1 encoding-type der

O padrão é hexadecimal:

rsa peer-public-key test-key1

Nota: O equipamento Huawei não apenas suporta chaves no formato RSA, mas também outros formatos:

ssh user user-name assign { rsa-key | dsa-key | ecc-key } key-name

Você pode definir rigidamente o tipo de autenticação para o usuário via SSH:

[R1]ssh user jet authentication-type ?
  all           All authentication, password,RSA or ECC
  ecc           ECC authentication
  password      Password authentication
  password-ecc  Both password and ECC
  password-rsa  Both password and RSA
  rsa           RSA authentication
[R1]

Ou seja, permitimos o acesso usando uma senha, chaves públicas e privadas ou ambas.


Huawei USG (6000)


A configuração é completamente semelhante às configurações do roteador, mas possui alguns recursos.

Por padrão, o nível de privilégio após o log usando certificados é 0 e não pode ser elevado. Portanto, o nível de prioridade é definido usando

user-interface vty 0 4 
user privilege level 15
user-interface vty 16 20:
user privilege level 15

Exemplo:

[USG-a]rsa peer-public-key test-key1 encoding-type pem 
Enter "RSA public key" view, return system view with "peer-public-key end".
[USG-a-rsa-public-key]public-key-code begin
Enter "RSA key code" view, return last view with "public-key-code end".
[USG-a-rsa-key-code]---- BEGIN SSH2 PUBLIC KEY ----
[USG-a-rsa-key-code]Subject: subject
[USG-a-rsa-key-code]Comment: " subject@subject.local"
[USG-a-rsa-key-code]ModBitSize: 2048
[USG-a-rsa-key-code]AAAAB3NzaC1yc2EAAAADAQABAAABAQC4YLFhPqfsz4a6PUpZOtvm6zGn5TWOVMnx
[USG-a-rsa-key-code]lTH5hr/u+aYnoM2XnDTu4Ul1iB8MMPLVKXzV4LgYhaFcU1rz2/yYhTKIwbiQTHof
[USG-a-rsa-key-code]63fJjyWwkvyBuVZTSKh4b2pfoF2mXgdJzzRmUaiRrZZUVJWsX+CbgtKQuktG7sTK
[USG-a-rsa-key-code]2eguHwdfhilbOAsUaL0/q39Y0aTAMnLMtn0m5r6MD/UopQPI3Fxm1L9azJ7zYIZa
[USG-a-rsa-key-code]yI43Solg0AOupPl8FHFI9Cxq81/uZRACx5lAyuObaQ4/t1Rdh3CAJj1qwfZjZFTP
[USG-a-rsa-key-code]VdJxwTDxwfkpOzMD193M0ThOSrgfWe336Q9F3jbSWrEYUQDX8ew7
[USG-a-rsa-key-code]---- END SSH2 PUBLIC KEY ----
[USG-a-rsa-key-code]public-key-code end
[USG-a-rsa-public-key]peer-public-key end
[USG-a]
[USG-a]ssh user admin assign rsa-key test-key1
! Out-of-band management interface:
[USG-a-GigabitEthernet0/0/0]service-manage ssh permit
! Grant user level 15 privillege:
[USG-a]user-interface vty 0 4
[USG-a-ui-vty0-4]user privilege level 15


Cisco Nexus 9.3


Opção 1: pré-instale o arquivo de chave pública no dispositivo e anexe o arquivo de chave pública ao usuário.

  • Copie o arquivo de chave pública para o dispositivo.
  • Instruímos o usuário a usar o arquivo de chave pública.

switch# copy tftp://10.10.1.1/secsh_file.pub bootflash:secsh_file.pub
username User1 sshkey file bootflash:secsh_file.pub

Opção 2: copie a chave pública para o usuário:

username User1 sshkey
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4YLFhPqfsz4a6PUpZOtvm6zGn5TWOVMnxlTH5hr/u+aYnoM2XnDTu4Ul1iB8MMPLVKXzV4LgYhaFcU1rz2/yYhTKIwbiQTHof63fJjyWwkvyBuVZTSKh4b2pfoF2mXgdJzzRmUaiRrZZUVJWsX+CbgtKQuktG7sTK2eguHwdfhilbOAsUaL0/q39Y0aTAMnLMtn0m5r6MD/UopQPI3Fxm1L9azJ7zYIZayI43Solg0AOupPl8FHFI9Cxq81/uZRACx5lAyuObaQ4/t1Rdh3CAJj1qwfZjZFTPVdJxwTDxwfkpOzMD193M0ThOSrgfWe336Q9F3jbSWrEYUQDX8ew7


Usando uma chave secreta para conexão SSH


Esta seção é dedicada à configuração de clientes SSH para autenticação usando chaves RSA em equipamentos de rede (ou outro equipamento, desde que o hardware e o software ofereçam suporte à autenticação de chave pública).

Consideraremos configurar o uso da chave pública nos programas mais populares: SecureCRT e PuTTY.


SecureCRT


Há uma lista de autenticação na janela de configurações do SSH. Nele, você precisa aumentar a prioridade do PublicKey para o mais alto - torná-lo o primeiro na lista.



Em seguida, vá para as opções PublicKey e selecione o arquivo de chave privada. A opção superior permite que você use as configurações globais da chave secreta ou das configurações da sessão - outra chave secreta (chave não padrão) - apenas para esta conexão.



Configure a chave pública global: no menu Opções → Opções globais → Categoria SSH2.



PuTTY


Nas configurações de SSH (Conexão → SSH → Autenticação) no campo "Arquivo de chave privada para autenticação", especifique o arquivo Putty Private Key (* .ppk):



MAC OS X


Configurando um cliente padrão para usar chaves públicas:

  • Conexão com uma chave não padrão especificada manualmente:

    artemiy-2:~ ArtemiySP$ ssh r4@10.31.73.29 -i ~/Documents/python/r4
    The authenticity of host '10.31.73.29 (10.31.73.29)' can't be established.
    RSA key fingerprint is SHA256:fxOLFKU6YGyIqisrIh2P0O52Rr6Wx/wsSAcHsTz8fo0.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '10.31.73.29' (RSA) to the list of known hosts.
    CSR-4#
    
  • Conexão com uma chave não padrão especificada manualmente:

    artemiy-2:~ ArtemiySP$ ssh r5@10.31.73.30 -i ~/Documents/python/r5
    The authenticity of host '10.31.73.30 (10.31.73.30)' can't be established.
    RSA key fingerprint is SHA256:4l67C4Il4pTaqYT4vrtWr0aY7rPmNWKsjRv2zlYtQIU.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '10.31.73.30' (RSA) to the list of known hosts.
    MGTU#exit
    Connection to 10.31.73.30 closed.
    

    Exemplo de erro
    — . MAC OS X — .
  • Conexão com a chave padrão (chave padrão - o próprio sistema encontrará e usará a chave pública padrão):

    artemiy-2:~ ArtemiySP$ ssh r6@10.31.73.31
    The authenticity of host '10.31.73.31 (10.31.73.31)' can't be established.
    RSA key fingerprint is SHA256:2/ysACJQw48Q8S45ody4wna+6nJspcsEU558HiUN43Q.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '10.31.73.31' (RSA) to the list of known hosts.
    PR#exit
    Connection to 10.31.73.31 closed.
    artemiy-2:~ ArtemiySP$ 
    


Como simplificar o trabalho com SSH no MAC OS X:


  • Crie aliases SSH.
  • Nos aliases de SSH, definimos os usuários imediatamente.
  • Registre imediatamente a localização das chaves.

O local dos Aliases e a configuração SSH pré-configurada são especificados no arquivo ~ / .ssh / config (/Users/[Username†/.ssh/config).

Preenchido desta maneira:

host r4
   Hostname 10.31.73.29
   Port 22
   User r4
   IdentityFile ~/Documents/python/r4

host r5
   Hostname 10.31.73.30
   Port 22
   User r5
   IdentityFile ~/Documents/python/r5

host r6
   Hostname 10.31.73.31
   Port 22
   User r6

Nota: minha conexão padrão está configurada incorretamente (não sei como), porque a conexão com o host R6 (10.31.73.31) leva muito tempo. É recomendável especificar imediatamente o caminho para a chave padrão.

Um exemplo de uma conexão ssh usando chaves públicas e um arquivo de configuração:

artemiy-2:Documents ArtemiySP$ ssh r5
MGTU#exit
Connection to 10.31.73.30 closed by remote host.
Connection to 10.31.73.30 closed.
artemiy-2:Documents ArtemiySP$ ssh r4
CSR-4#exit
Connection to 10.31.73.29 closed by remote host.
Connection to 10.31.73.29 closed.
artemiy-2:Documents ArtemiySP$ ssh r6
PR#exit
Connection to 10.31.73.31 closed.
artemiy-2:Documents ArtemiySP$ ssh r6
PR#


Conclusão


As chaves RSA podem ser usadas para substituir a autenticação de senha, mas não em todos os casos:

  • A autenticação de chave pública não é possível se a autenticação de domínio estiver configurada (porque as solicitações LDAP (kerberos) para o servidor estão em proxy para autenticação).
  • A autenticação de chave pública em equipamentos de rede antigos não é possível (exemplo: falha ao configurar no Cisco Catalyst 2960 com firmware 12.2).

Chaves públicas protegidas por senha são convenientemente usadas em equipamentos de bancada. Desvantagem: é necessário enviar um monte de chaves públicas e privadas para colegas e parceiros.

Em alguns equipamentos, vários pares de chaves públicas podem corresponder a um usuário; em outros equipamentos, apenas uma chave pública corresponde a um usuário.

Também existem diferentes formatos nos quais um par de chaves públicas e privadas é armazenado. Mas este guia o ajudará a exportar chaves em diferentes formatos.

Hoje, é ideal usar chaves com um comprimento de 2048 bits, mas para alguns equipamentos esse é o tamanho máximo possível (talvez isso seja corrigido no novo firmware). Por exemplo:

[R1]rsa peer-public-key test-key2 encoding-type pem
Enter "RSA public key" view, return system view with "peer-public-key end".
NOTE: The number of the bits of public key must be between 769 and 2048.
[R1-rsa-public-key]

É recomendável usar chaves públicas para substituir senhas se as senhas forem inseridas usando scripts (exemplo: logon automático no SecureCRT).

É recomendável usar chaves públicas para proteger contra a transmissão de senha pela rede.

Alguns softwares usam chaves públicas por padrão para autenticação SSH em vez de uma senha (exemplo: Ansible).


Lista de fontes:


  1. Wikipedia RSA
  2. Conversão Putty para SecureCRT com autenticação. chaves, Fórum SecureCRT
  3. Guia de configuração do Secure Shell, Cisco IOS Release 15E
  4. Baixar PuTTYgen
  5. Documentação oficial da Huawei - uma descrição dos vários formatos principais de importação para um roteador Huawei
  6. Huawei USG 6000, Configurando a autenticação de chave pública (CLI: exemplo para efetuar login na CLI usando STelnet (autenticação RSA))
  7. Nexus 9000 Configuration guide SSH public key
  8. man ssh-keygen — mac os x.
  9. SSH config file MAC OS X
  10. SSH
  11. SSH config
  12. openssh public key RFC4716

All Articles