我正在尝试使用 ssh 公钥身份验证登录 ASR9001 路由器。我试图将我的 ssh 公钥导入路由器,但没有成功。
RP/0/RSP0/CPU0:ASR9K-1#crypto key import authentication rsa disk0:/test.pem 无法执行命令:参数无效
有谁知道这是怎么做到的吗?
谢谢。
我正在尝试使用 ssh 公钥身份验证登录 ASR9001 路由器。我试图将我的 ssh 公钥导入路由器,但没有成功。
RP/0/RSP0/CPU0:ASR9K-1#crypto key import authentication rsa disk0:/test.pem 无法执行命令:参数无效
有谁知道这是怎么做到的吗?
谢谢。
我收到了 Cisco 技术支持的回复,手册中有一些内容没有正确描述。
首先,ASR 路由器支持与其手册相反的 1024 位或更小的密钥大小(最多支持 2048 位密钥)。
其次,只有 SSH 公钥的关键部分必须使用 base64 编码/解码程序进行“解码”。
ssh-keygen -b 1024 -t rsa -f myrouter_sshkey
这将生成myrouter_sshkey
和myrouter_sshkey.pub
。当您查看公钥文件时,它如下所示:
SSH-RSA AAAAB3NzaC1yc2EAAAADAQABAAAAgQDR / ggtknqBZ50pIAyzw0E93wfu2EsGLnft / uF6N4ov6Dsp1H7yoC5ssE + yOcrWHeDEQnD0BsNCLZPW + ye7jjYeE + CUrOINpi04PtD + zx95knpAFnREMV7w8fJ9c7 / SMb2L4Jk6KlmTcqtM + lUgrxEnCD7Z1kpCUzkP + 0D0N / RG2Q == foo@bar.com
我们只需要用空格分隔的公钥文件的第二部分进行base64解码。
cut -d" " -f2 myrouter_sshkey.pub | base64 -d > myrouter_sshkey.pub.b64
这个生成的文件是二进制格式,可以导入到 ASR 路由器中。
请注意,如果您使用的是 MAC,请改用 -D 选项。
RP/0/RSP0/CPU0:ASR9K#copy ftp:myrouter_sshkey.pub.b64 harddisk:/
我使用 ftp,但您可以使用 tftp 或其他。
RP/0/RSP0/CPU0:ASR9K#admin
RP/0/RSP0/CPU0:ASR9K(admin)#crypto key import authentication rsa username admin
RP/0/RSP0/CPU0:ASR9K(admin)#sh crypto key authentication rsa all
Key label: admin
Type : RSA public key authentication
Size : 1024
Imported : 18:39:54 UTC Thu Jul 03 2014
Data :
{{intentionally removed}}
ssh -oIdentitiesOnly=yes -i myrouter_sshkey ${myrouter}
请注意,如果您有多个 ssh 密钥,则-oIdentitiesOnly=yes
必须提供,否则您的连接将失败。SSH 会按顺序尝试每个密钥,直到其中一个密钥被接受或最终回退到密码验证(如果适用)。即使第一次密钥试验失败,SSH 服务器也可能允许多次密钥试验。不幸的是,ASR 路由器似乎不允许这样做。如果第一个尝试的密钥失败,它将断开会话。要明确指定您使用的密钥,请-oIdentitiesOnly=yes
为 ssh提供选项。
ip ssh pubkey-chain
username ...
key-string
...
exit
exit
exit
ASR9k 上的 IOS-XR 似乎在这个主题上的记录很差(除了说它支持它。)crypto key import authentication rsa general-keys
似乎是命令,但没有使用它来导入用户密钥的示例,而不是路由器自己的身份。
Minsuk Song 的说明奏效了,但是我不清楚其中的一些步骤。我想澄清几件事。
回复:“将‘解码’的公钥上传到路由器。” 部分。 该示例不共享从远程系统中提取密钥的确切语法。另请注意,您需要运行 FTP 服务器。对于 Windows,您可以使用 Filezilla,对于 Linux,我使用 python 库 pyftpdlib(您可以 pip install 模块)然后运行
sudo python -m pyftpdlib -p 21 -w
从远程服务器拉取的实际语法是
copy ftp://@10.10.10.10//yourpublickey.pub harddisk:/
然后 Cisco 将提示您输入登录信息。
回复:“将公钥导入路由器用户。” 我不需要输入“admin”(我运行的是 Cisco IOS XR 7.4.15)。我使用的语法如下:
crypto key import authentication rsa username yourusernameonthecisco ftp://@10.10.10.10//yourpublickey.pub
其他一切工作正常。