SSH
公開鍵
Cisco
スマホじゃねえ方のIOS
SFC-RGDay 10

Cisco IOS で公開鍵認証でのSSHを有効化する

この記事はSFC-RG Advent Calendar 2017の10日目です。
誰も書かないから埋めました。
来年のNOCでヤング:boy_tone1:たちに見せるための備忘録。


概要

  • Cisco IOSでsshによる公開鍵認証を 有効化する方法:v:
  • と、ハマりどころ:metal:

なんか知らないけど当たり前のようにパスワード認証で我慢してる人が多い気がする。出来ないもんだと思ったけど調べたら方法があったので共有。
ちなみにYamaha RTXは出来ない。悲しい。

検証環境

  • Cisco 891FJ
  • Cisco IOS 15.4
  • 検証に用いる鍵はごく一般的なRSA
#
router# show version
Cisco IOS Software, C800 Software (C800-UNIVERSALK9-M), Version 15.3(3)M5, 
ROM: System Bootstrap, Version 15.4(1r)T1, RELEASE SOFTWARE (fc1)

設定内容

クライアントPCとL3で導通するところまではがんばってやる :checkered_flag:

:one: とりあえずパスワードでSSHログイン出来るようにする

[Cisco IOS] SSHによるリモートアクセスの設定

等を参考に行う。
時間に余裕が無い現代ピーポー:cop:のために必要なところを抜粋。

enable用パスワードを作成
cisco1(config)enable secret ぱすわーどは半角英数記号で書く
SSHの有効化とバージョンの明示的宣言
cisco1(config)# ip ssh version 2
vtyの設定
cisco1(config)#line vty 4
cisco1(config-line)#login local
cisco1(config-line)#transport input ssh
hostnameとドメインの設定
cisco1(config)#hostname cisco1

cisco1(config)#crypto key generate rsa
<中略>
How many bits in the modulus [512]: 2048

注:この鍵はルーター側の鍵。鍵長は2017年12月現在2048なら問題ない。

:arrow_down: 今回は公開鍵認証のみにログインを限定するためスキップする

ユーザーの作成(今回はスキップする)
cisco1(config)username ユーザー名 secret ぱすわーどは半角英数記号で書く

ちなみにline vty 0 4でお馴染みのVTYの解説。脱線。

 VTY line (Virtual Terminal Line) は文字通り仮想端末のラインであることから、コンソールポートとは異なり、実際に物理的にポートを持っている訳ではありません。Ciscoルータに同時に5つのtelnetセッションを接続することができます。VTYポートは、小さい番号から使用されていきます。

引用:http://www.infraexpert.com/study/ciscorouter6.html

:two: 公開鍵を登録する

(config)#
cisco1(config)#ip ssh pubkey-chain
cisco1(conf-ssh-pubkey)#username ユーザー
cisco1(conf-ssh-pubkey-user)#key string
cisco1(conf-ssh-pubkey-data)#公開鍵鍵をペタペタペーストする
cisco1(conf-ssh-pubkey-data)#exit

鍵をペタペタする際に一気に全部貼ると怒られる。
5回くらいに分けて改行しながら入れる。

:two: . :five: (追記)

グローバルにユーザーが残っているとパスワードログイン出来てしまった。
もし既にユーザー設定がある場合は削除する。

ユーザーの作成
cisco1(config)no username ユーザー名

:three: 認証方式を決定する

(config)#
cisco1(config)#ip ssh server authenticate user publickey

今回は公開鍵認証のみのログインに限定する。パスワード認証を残す場合はpublickey passwordとする。
自分の環境では↑のような感じだった。Catalystだとまたちょっと違うらしい。
ip ssh ? とかで当てはまりそうな物を探してください。

:four: 試す

#
cisco1# exit
~/
Macbook% ssh ユーザー名@ルーターのIPアドレス

cisco1>

出来た :confetti_ball:
失敗した場合は面倒くさいけどコンソールケーブルを繋いで設定を見直して下さい...
特に鍵ペタペタに失敗するケースが多いと思われる。

refs.

全て2017年12月参照
Cisco Router - Basic Security
[Cisco IOS] SSHによるリモートアクセスの設定