Skip to content

IOS-XR(Cisco ASR 9000)へ公開鍵認証方式を使い、パスワード無しで SSH ログインする

以前に Cisco 機器へのログイン方法をまとめました。

今回は Cisco ASR 9000 シリーズで使われている IOS-XR への SSH ログインを公開鍵認証で行う為の設定方法を記載します。

検証環境

検証は Cisco VIRL 上で行い、OS は以下を用いました。

  • IOS-XRv 5.3.2

作業の流れ

作業の流れは概ね以下の通りです。

  1. IOS-XR へ、IP アドレスや SSH の設定をしておく
  2. Linux 側で公開鍵/秘密鍵ペアを生成する
  3. Linux 側で公開鍵を BASE64 エンコードする
  4. 公開鍵を Linux から IOS-XR へコピーする
  5. IOS-XR でユーザと公開鍵を紐付ける
  6. Linux から IOS-XR へ SSH し、パスワード無しでログイン出来ることを確認する

注意点

以下の点には注意が必要です。

  • 公開鍵は BASE64 でエンコードされている必要がある
  • 複数ユーザ分の公開鍵をインポートする場合は以下等の対策が必要
    • ユーザ毎に公開鍵のファイル名を変更する
    • 公開鍵はユーザ毎のフォルダ内に保存する

IOS-XR へ、IP アドレスや SSH の設定をしておく

以前の記事を参考に、IOS-XR に IP アドレスや SSH ログインを受け付ける為の基本的な設定を実施しておきます。具体的には、まず RSA 鍵を生成します。

1
2
3
4
5
6
7
8
9
# crypto key generate rsa
Wed Jul 15 23:34:55.692 UTC
The name for the keys will be: the_default
  Choose the size of the key modulus in the range of 512 to 4096 for your General Purpose Keypair. Choosing a key modulus greater than 512 may take a few minutes.

How many bits in the modulus [1024]: 2048
Generating RSA keys ...
Done w/ crypto generate keypair
[OK]

続いて、IP アドレスや SSH 有効化の設定をしておきます(IOS-XR なので設定後は JUNOS のように commit が必要です)。

1
2
3
4
5
6
7
8
9
username USER1 password PASSWORD
!
interface MgmtEth0/0/CPU0/0
 ipv4 address 192.168.1.2 255.255.255.0
 no shutdown
!
ssh server v2
!
end

Linux 側で公開鍵/秘密鍵ペアを生成する

次は Linux 側で作業します。まず公開鍵/秘密鍵のペアを生成します。鍵長は 2,048bit、パスフーレズは『無し』としました。

1
ssh-keygen -t rsa -b 2048 -f ~/id_rsa_USER1 -N ""

以下の通り、秘密鍵(id_rsa_USER1)と公開鍵(id_rsa_USER1.pub)が出来ました。

1
2
$ ls id_rsa_USER1*
id_rsa_USER1  id_rsa_USER1.pub

生成された公開鍵の鍵長を確認してみます。以下の例では「2,048」と表示されていますので、意図した通りに鍵が作成されています。

1
2
$ ssh-keygen -l -f ~/id_rsa_USER1.pub
2048 SHA256:mw+05DjJDrQ6Ixj0lkuEAu39Et7VClUfgGixxxxxxxx USER1@Ubuntu-01 (RSA)

Linux 側で公開鍵を BASE64 エンコードする

IOS-XR の仕様で公開鍵は BASE64 エンコードされている必要があるようです(BASE64 エンコードされていないと IOS-XR へインポートするときにエラーで弾かれてしまいました)。ですので、作成した公開鍵を BASE64 エンコードしておきます。

1
cut -d" " -f2 ~/id_rsa_USER1.pub | base64 -d > ~/id_rsa_USER1.pub.b64

公開鍵を Linux から IOS-XR へコピーする

BASE64 エンコードが終わったら、出来上がったファイルを IOS-XR へコピーしておきます。今回は IOS-XR 上から scp でファイルをコピーします。まず、コピー前には IOS-XR 上に公開鍵が存在しないことを確認しておきます。

1
2
3
4
5
6
RP/0/0/CPU0:ios# dir id_rsa*
Fri Dec  4 09:09:59.837 UTC

Directory of disk0:

No such file or directory

Linux 側から scp で公開鍵を IOS-XR へコピーします。

1
scp ~/id_rsa_USER1.pub.b64 admin@192.168.1.2:disk0:/

IOS-XR 上で公開鍵がコピーされたことを確認しておきます。

1
2
3
4
5
6
7
8
# dir id_rsa*
Fri Dec  4 09:25:18.104 UTC

Directory of disk0:

5           -rw-  279         Fri Dec  4 09:25:12 2015  id_rsa_USER1.pub.b64

2377105408 bytes total (1768782848 bytes free)

IOS-XR でユーザと公開鍵を紐付ける

公開鍵のインポート処理は admin モードから実行します。admin で admin モードへ遷移した後、crypto key import authentication rsa username USERNAME PATH-TO-KEY でユーザと公開鍵を紐付けます。

1
2
3
4
RP/0/0/CPU0:ios# admin
Fri Dec  4 09:27:26.445 UTC
RP/0/0/CPU0:ios(admin)# crypto key import authentication rsa username USER1 disk0:/id_rsa_USER1.pub.b64
Fri Dec  4 09:27:51.243 UTC

show crypto key authentication rsa all でユーザと公開鍵が紐付けられていることを確認しておきます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
RP/0/0/CPU0:ios(admin)# show crypto key authentication rsa all
Fri Dec  4 09:28:55.639 UTC
Key label: USER1
Type     : RSA public key authentication
Size     : 2048
Imported : 09:27:51 UTC Fri Dec 04 2015
Data     :
 30820122 300D0609 2A864886 F70D0101 01050003 82010F00 3082010A 02820101
 00CAD93D 0E388EED 3E2B8C78 B851DEC3 7A99DB79 69DDA8A9 F34DFB9A 4950463A
 DB863ED7 0E40B8BD 3B7005F3 560E247E 698FC48B CBA09D81 8055831E 5F88AEC5
 45F76F62 1C40366C 34E5E659 21F35B67 CCF2732A 8A06E7AB F8F26372 6DCE5E90
 A1BEEC80 772DD478 5B5BC1EB 13AFBAD4 A6884066 66398D2C CFE0F525 9594419C
 107C08F5 C05028CF 5CCAD8DD A897DC0D 2AF1A069 296C8D5E 288F88AF F3C8F85D
 C2B0AB79 72B78E78 7AFB486F 7812092F 12A35DF3 B6FFE7E6 3B51F91E F545617C
 92C40FCB 92E6D7AC DADBAB18 6C35151A 16FA67DC 7F4FE549 98A0AAD4 9ED2D04D
 329CBFC9 2F0610F9 598DC6A6 8C8C2316 A3B8D3EB 747D7F9A 987D8ADA FE759036
 F7020301 0001

Linux から IOS-XR へ SSH し、パスワード無しでログイン出来ることを確認する

Linux から秘密鍵を指定し、IOS-XR へパスワード無しでログイン出来ることを確認しておきます。今回は IOS-XRv(デモ版)を使っているので「デモ版へようこそ!」メッセージが表示されてしまっていますが、ログイン自体はパスワード無しで成功しています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ ssh -oIdentitiesOnly=yes -i ~/id_rsa_USER1 USER1@192.168.1.2



IMPORTANT:  READ CAREFULLY
Welcome to the Demo Version of Cisco IOS XRv (the "Software").
The Software is subject to and governed by the terms and conditions
of the End User License Agreement and the Supplemental End User
License Agreement accompanying the product, made available at the
time of your order, or posted on the Cisco website at
www.cisco.com/go/terms (collectively, the "Agreement").
As set forth more fully in the Agreement, use of the Software is
strictly limited to internal use in a non-production environment
solely for demonstration and evaluation purposes.  Downloading,
installing, or using the Software constitutes acceptance of the
Agreement, and you are binding yourself and the business entity
that you represent to the Agreement.  If you do not agree to all
of the terms of the Agreement, then Cisco is unwilling to license
the Software to you and (a) you may not download, install or use the
Software, and (b) you may return the Software as more fully set forth
in the Agreement.


Please login with any configured user/password, or cisco/cisco




RP/0/0/CPU0:ios#