使用公钥通过SSH在网络设备上进行身份验证

钥匙串

默认情况下,工程师使用用户名和密码连接到网络设备。使用Telnet,用户凭据以明文形式传输,并通过SSH加密传输。为了不通过网络传输秘密部分,使用了公共密钥身份验证。通过此身份验证,用户的公钥将在设备上预先分配给用户。私钥不通过网络传输。

本指南将帮助您在使用SSH协议连接到网络设备时快速开始使用公共密钥进行身份验证。该指南适用于Windows和Mac OSX。我试图使它尽可能简单和有用。它没有过载,但是可以回答以下基本问题:





我还研究了“疼痛”主题:

  • OpenSSH <==> SecureCRT <==> PuTTY之间的密钥转换。
  • 对不同的设备使用不同的公钥对。一键是好的,但实际上并不适用。不同的客户或设备需要不同的公钥对(有些需要密码,有些则不需要)。
  • 使用本机(本机)MAC OS X处理公钥。
  • 该指南还应帮助在网络设备上使用Ansible,因为Ansible默认使用带有公共密钥身份验证的OpenSSH。

所提供的90%的材料均在真实设备上进行了测试。


介绍


除了SSH协议中的标准密码身份验证(密码/键盘)外,还存在公钥身份验证(RSA)。

以供参考
RSA (https://ru.wikipedia.org/wiki/RSA) — . (public key) (private key). : . . , , .

使用RSA密钥的身份验证包括以下几个步骤:


为什么只有RSA?为什么不提供DSA?不幸的是,我没有找到这个问题的答案(也没有真正寻找它)。但是正式地,思科设备仅支持RSA。

安全外壳配置指南,Cisco IOS版本15E:

安全外壳配置指南,
针对安全外壳版本2支持的Cisco IOS版本15E 限制
Rivest,Shamir和Adleman(RSA)密钥生成是SSH服务器端要求。充当SSH客户端的设备无需生成RSA密钥。

尝试输入DSA密钥数据:

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


创建一个公共RSA密钥


可以使用各种实用程序创建一对RSA密钥:SecureCRT,PuTTYgen或任何其他软件。创建密钥时,可以设置密码短语(使用密钥进行密码保护)。


SecureCRT中的RSA对生成


SecureCRT->工具->创建公钥...:


有点理论→“下一步”按钮:


RSA / DSA证书的类型→选择RSA→“下一步”按钮:


密钥的加密密码(可选,您可以将其保留为空白而不加密)+注释→“下一步>”按钮:


选择密钥长度(在SecureCRT版本6.1.0中,最大密钥长度为2048位,在版本8.5.4-16384位中):




生成 密钥→“下一步”按钮:要生成随机数,需要在窗口内移动鼠标。



保存密钥对→选择存储位置→选择已保存密钥的格式(VanDuke专用格式,OpenSSH旧版,OpenSSH新版)→“完成”按钮:



SecureCRT询问是否将此密钥设置为SecureCRT的默认密钥:



PuTTYgen中的RSA对生成


您可以在此处下载PuTTYgen:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

启动PuTTYgen:


选择参数(对类型:RSA;密钥位大小:2048;可以选择设置密码(使用密码进行密码保护))→生成:


为了保证随机数,他要求在窗口内移动鼠标。这是针对伪随机数的保护。


保存RSA密钥→“保存私钥”按钮:


请注意:在一种软件中以私有格式存储的RSA密钥不能在另一家制造商的软件中使用。也就是说,在PuTTYgen中创建并以Putty私钥格式保存的一对RSA密钥不适合在SecureCRT中使用,反之亦然。PuTTY仅支持Putty私钥格式。分发密钥的通用解决方案是将密钥转换为OpenSSH格式(请参阅链接2:“使用身份验证密钥从Putty转换为SecureCRT”)。由于SecureCRT可自由使用OpenSSH格式。PuTTYgen软件将OpenSSH格式转换为Putty Private Key格式。


将RSA密钥从Putty私钥(PuTTY)格式转换为OpenSSH(SecureCRT)格式


要使用以PuTTYgen生成并以Putty私钥格式(* .ppk)保存的SecureCRT中的RSA密钥,我们使用PuTTYgen以OpenSSH格式导出它们:

  1. 启动PuTTYgen。
  2. 我们以Putty私钥格式(* .ppk)→“加载”按钮加载现有的RSA密钥。
  3. 保存公共密钥文件→“保存公共密钥”。
  4. 我们将密钥导出为OpenSSH格式:菜单PuTTYgen→“转换”→“导出OpenSSH密钥”。
  5. 我们在SecureCRT中使用OpenSSH文件。具有公钥的文件扩展名为.pub,具有私钥的文件没有扩展名。


将RSA密钥从VanDyke私钥(SecureCRT)格式转换为Putty私钥(PuTTY)格式


要使用由SecureCRT生成并以VanDyke私钥格式(公用密钥文件* .pub,私钥文件*。(无扩展名))保存的PuTTY中的RSA密钥,请使用OpenSSH格式的SecureCRT导出它们,然后使用PuTTYgen,我们导出为Putty私钥(* .ppk)格式:

  1. 启动SecureCRT。
  2. 菜单“工具”→“将私钥转换为OpenSSH格式...”
  3. 使用VanDyke专用密钥键选择源文件。
  4. 我们用新名称保存OpenSSH密钥。
  5. 启动PuTTYgen。
  6. 我们以OpenSSH格式(*。)加载现有的RSA密钥:PuTTYgen菜单→“转换”→“导入密钥”。
  7. 以Putty格式保存文件:“保存私钥”。


使用操作系统在MAC OS X上生成公钥


我们将使用内置的ssh-keygen实用程序(man ssh-keygen)。
我们使用密钥名称(包含密钥存储位置的文件夹路径)生成长度为2048位的RSA密钥:

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

在运行时,程序将要求输入密码以保护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$

我们生成一个长度为4096位的RSA密钥,用于指示密钥名称,具有密钥存储位置的文件夹的路径,并在密钥生成参数(-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$

不建议使用的密钥生成参数:长度为1024位的不可靠密钥,指定密钥名称,具有密钥存储位置的文件夹的路径,我们在密钥生成参数中显式设置了密码(-N“”-无密码):

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$

因此,我们创建了三个键,其中包含键的名称和键的位置(默认情况下,所有键都存储在/ Users / [Username 022 / .ssh)中。

默认情况下,通过SSH连接并通过公用密钥进行身份验证时,所有公用密钥均按顺序存储,这些存储在/Users/[Username†/.ssh文件夹中。

R6密钥:将密钥重命名为“ id_rsa”(默认情况下,生成的密钥文件的名称为“ id_rsa”),然后使用SSH密钥(〜/ .ssh /)将其传输到文件夹中(即,我们将执行所有步骤,以便将R6密钥用作主密钥默认SSH连接密钥):

将公用OpenSSH密钥转换为RFC4716格式(导出到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


在设备上使用公钥


如何在各种设备上将公钥绑定到用户?

将公钥绑定到用户的过程不是标准的,并且因设备而异,因此,给出了网络上最常用的每种类型的设备的示例。


Cisco IOS XE,Catalyst(从版本15.1和更高版本开始),IOS


  1. 设备上已经有一个用户。
  2. 在用户(用户名cisco)的SSH设置(ip ssh pubkey-chain)中,指定公用密钥(key-string):
    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#
    


思科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$

我们将整个密钥插入一行(OpenSSH格式)。


华为路由器和交换机


[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

导入华为的密钥格式类型:

“ SecureCRT和PuTTY生成PEM格式的RSA密钥。”

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

“ OpenSSH会以OpenSSH格式生成RSA密钥。”

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

“ OpenSSL生成DER格式的RSA密钥。”

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

默认值为十六进制:

rsa peer-public-key test-key1

注意:华为设备不仅支持RSA格式的密钥,还支持其他格式:

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

您可以通过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]

也就是说,我们允许使用密码或公用密钥和专用密钥(或两者)进行访问。


华为USG(6000)


该配置与路由器上的设置完全相似,但是具有一些功能。

缺省情况下,使用证书登录后的特权级别为0,无法提升。因此,使用

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

例:

[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


思科Nexus 9.3


选项1:在设备上预安装公用密钥文件,并将公用密钥文件附加到用户。

  • 将公钥文件复制到设备。
  • 我们指导用户使用公共密钥文件。

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

选项2:将公钥复制到用户:

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


使用密钥进行SSH连接


本节专门介绍配置SSH客户端以使用网络设备(或其他设备,只要硬件和软件支持公用密钥身份验证)上的RSA密钥进行身份验证。

我们将考虑在最受欢迎的程序(SecureCRT和PuTTY)中设置公共密钥的使用。


安全CRT


SSH设置窗口中有一个身份验证列表。在其中,您需要将PublicKey的优先级提高到最高-将其置于列表顶部。



然后转到PublicKey选项并选择私钥文件。最上面的开关允许您仅对此连接使用秘密密钥或会话设置的全局设置(另一个秘密密钥(非默认密钥))。



配置全局公钥:在菜单选项→全局选项→类别SSH2中。



油灰


在SSH设置(连接→SSH→身份验证)的“用于身份验证的私钥文件”字段中,指定文件Putty私钥(* .ppk):



MAC OS X


设置使用公共密钥的标准客户端:

  • 使用手动指定的非默认密钥进行连接:

    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#
    
  • 使用手动指定的非默认密钥进行连接:

    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.
    

    错误示例
    — . MAC OS X — .
  • 使用默认密钥(默认密钥-系统本身将找到并使用默认公共密钥)进行连接:

    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$ 
    


如何简化在MAC OS X上使用SSH的工作:


  • 创建SSH别名。
  • 在“ SSH别名”中,我们立即设置用户。
  • 立即注册按键的位置。

别名的位置和预先配置的SSH配置在〜/ .ssh / config文件(/Users/[Username†/.ssh/config)中指定。

用这种方式填写:

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

注意:我的默认连接配置不正确(我不知道如何正确设置),因为与R6主机(10.31.73.31)的连接需要很长时间。建议您指定立即指定默认密钥的路径。

使用公钥和配置文件进行ssh连接的示例:

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#


结论


RSA密钥可用于代替密码身份验证,但并非在所有情况下都可以:

  • 如果配置了域身份验证,则不可能进行公钥身份验证(因为对服务器的LDAP请求(kerberos)已通过身份验证进行代理)。
  • 无法在旧网络设备上进行公钥身份验证(例如:在固件版本为12.2的Cisco Catalyst 2960上配置失败)。

受密码保护的公共密钥可方便地用于台式设备。缺点:有必要向同事和合作伙伴发送一堆私钥和公钥。

在某些设备上,几对公共密钥可以对应一个用户,在其他设备上,只有一个公共密钥与一个用户对应。

还有一对公钥和私钥存储的不同格式。但是本指南将帮助您导出不同格式的密钥。

今天,使用长度为2048位的密钥是最佳选择,但是对于某些设备,这是最大可能的密钥长度(也许这将在新固件中固定)。例如:

[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]

如果使用脚本输入密码,则建议使用公共密钥替换密码(例如:SecureCRT中的自动登录)。

建议您使用公共密钥来防止通过网络传输密码。

某些软件默认情况下使用公共密钥而不是密码进行SSH身份验证(例如:Ansible)。


来源清单:


  1. 维基百科RSA
  2. 通过auth从Putty转换为SecureCRT。密钥,SecureCRT论坛
  3. 安全外壳配置指南,Cisco IOS版本15E
  4. 下载PuTTYgen
  5. 华为官方文档 -介绍导入华为路由器的各种密钥格式
  6. 华为USG 6000,设置公钥认证(CLI:使用STelnet登录CLI的示例(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