カテゴリ:

現在ではCCNAでもルータのアクセスに関してSSHの問題が出るようです。Linuxなどではかなり前からtelnetは標準で無効であり、当然といえば当然ですが…。

今回はSSHの基本的な利用を確認します。初期値ではSSHは無効になっています。

R1#sh ip ssh
SSH Disabled - version 1.99
%Please create RSA keys (of atleast 768 bits size) to enable SSH v2.
Authentication timeout: 120 secs; Authentication retries: 3

SSHを利用するにはRSAキーを作成します。

R1(config)#crypto key generate rsa modulus 1024
% Please define a domain-name first.

ただ上記の結果から分かるとおり、あらかじめドメイン名の指定が必須です。

R1(config)#ip domain-name example.com
R1(config)#crypto key generate rsa modulus 1024
The name for the keys will be: R1.example.com

% The key modulus size is 1024 bits
% Generating 1024 bit RSA keys, keys will be non-exportable...[OK]

この時点でSSHで接続が可能となります。

R1(config)#
Apr 20 05:52:11.391: %SSH-5-ENABLED: SSH 1.99 has been enabled

R1(config)#do sh ip ssh
SSH Enabled - version 1.99
Authentication timeout: 120 secs; Authentication retries: 3

接続を行うユーザを作成します。

R1(config)#username cisco secret cisco

そしてローカル認証を有効にします。

R1(config)#line vty 0 15
R1(config-line)#login local
R1#debug ip ssh client
SSH Client debugging is on

では隣接するR2(12.12.12.2)よりR1(12.12.12.1)にSSHでログインします。R2では特に設定は必要ありません。またWindowsなどからでももちろん利用できます。

IOSでsshコマンドを利用するには-lオプションでユーザ名を指定します。

R2#ssh -l cisco 12.12.12.1

Password: ← パスワードを入力

R1>

この時、R1では下記のようなログが表示されます。

R1#
Apr 20 06:26:07.135: SSH0: sent protocol version id SSH-1.99-Cisco-1.25
Apr 20 06:26:07.147: SSH0: protocol version id is - SSH-1.99-Cisco-1.25

このまま利用するにはあまりセキュリティ的に望ましくないので、まずアクセスリストを設定します。この設定により12.12.12.0/24からの接続のみが許可されます。

R1(config)#access-list 1 per 12.12.12.0 0.0.0.255
R1(config)#line
R1(config)#line vty 0 15
R1(config-line)#access-class 1 in
R1(config-line)#do sh ip acce 1
Standard IP access list 1
    10 permit 12.12.12.0, wildcard bits 0.0.0.255 (2 matches)

この時点ではTELNETが有効です。せっかくSSHを有効にしたのに、このままでは意味がありません。SSHのみでの接続とするにはtransport inputコマンドを利用します。

R1(config)#line vty 0 15
R1(config-line)#transport input ssh

この時点でR2からのTELNETが利用できくなりました。

R2#telnet 12.12.12.1
Trying 12.12.12.1 ...
% Connection refused by remote host

初期値の設定ではSSHのバージョン1とバージョン2の両方が有効ですが、古いバージョン1をあえて利用する必要はありません。無効にします。sshコマンドで-vオプションを利用するとバージョンを指定できます。

R2#ssh -l cisco -v 1 12.12.12.1

下記はバージョン1で接続されたときのR1のログです。

Apr 20 06:35:27.827: SSH0: sent protocol version id SSH-1.99-Cisco-1.25
Apr 20 06:35:27.831: SSH0: protocol version id is - SSH-1.5-Cisco-1.25

R1でバージョン2のみを許可するように変更します。

R1(config)#do sh ip ssh
SSH Enabled - version 1.99
Authentication timeout: 120 secs; Authentication retries: 3
R1(config)#ip ssh version ?
  <1-2>  Protocol version

R1(config)#ip ssh version 2
R1(config)#do sh ip ssh
SSH Enabled - version 2.0
Authentication timeout: 120 secs; Authentication retries: 3

するとR2からバージョン1での接続が不可能になり、かなり安全な設定となりました。

R2#ssh -l cisco -v 1 12.12.12.1

[Connection to 12.12.12.1 aborted: error status 0]

R1(config)#
Apr 20 06:38:33.671: SSH0: Session terminated normally
Apr 20 06:38:35.567: SSH0: sent protocol version id SSH-2.0-Cisco-1.25
Apr 20 06:38:35.579: SSH0: receive failure - status 0x07
Apr 20 06:38:35.683: SSH0: Session disconnected - error 0x07

SSHの設定をする時にはip ssh logging eventsを有効にすると便利です。

R1(config)# ip ssh logging events
R1(config)#
Apr 20 06:46:32.455: SSH0: sent protocol version id SSH-2.0-Cisco-1.25
Apr 20 06:46:32.463: SSH0: protocol version id is - SSH-1.99-Cisco-1.25
Apr 20 06:46:32.567: %SSH-5-SSH2_SESSION: SSH2 Session request from 12.12.12.2 (tty = 0) using crypto cipher 'aes128-cbc', hmac 'hmac-sha1' Succeeded
Apr 20 06:46:33.739: %SSH-5-SSH2_USERAUTH: User 'cisco' authentication for SSH2 Session from 12.12.12.2 (tty = 0) using crypto cipher 'aes128-cbc', hmac 'hmac-sha1' Succeeded