本記事の位置づけ

別記事「ネットワークデバイスの管理アクセス方式」では、Telnet・SSH・HTTP・HTTPS等の管理アクセス方式を概念的に比較し、SSHの基本的な設定コマンドとshow ip sshによる確認方法を紹介しました。本記事では、CCNAで求められるSSHの設定を対象に、実際にSSHでリモートアクセスできる状態にするための一連の設定手順を、ローカル認証・VTY回線の設定まで含めて、より実務的な流れで解説します。

SSHでリモートアクセスするには、管理対象インターフェースに到達可能なIPアドレスが設定され、接続元とのIP到達性が確保されている必要があります。本記事では、これらのネットワーク設定はすでに完了しているものとします。

SSH設定の全体像

以下では、Cisco IOS機器でローカルユーザー認証を用いてSSHを使えるようにする構成として、次の3つの基本設定を行います。加えて、SSH version 1を使用させないため、SSHのバージョンをversion 2に明示的に設定します。

  • RSA暗号鍵を生成するための前提設定(ホスト名・ドメイン名)
  • ログイン認証に使う、ローカルユーザーアカウントの作成
  • VTY(仮想端末)回線を、SSHだけを受け付けるように設定

手順1:ホスト名・ドメイン名の設定とRSA鍵の生成

Cisco IOSでは、RSA暗号鍵を生成する前にホスト名とドメイン名を設定しておく必要があります。RSA暗号鍵そのものはランダムに生成されます。

Router(config)# hostname R1
R1(config)# ip domain-name example.co.jp
R1(config)# crypto key generate rsa modulus 2048

crypto key generate rsaをモジュラス長を指定せずに実行すると、鍵の長さ(モジュラス、ビット数)を尋ねられます。上記の例ではmodulus 2048で2048ビットを明示しているため、入力は求められません。値が大きいほど暗号強度は高まりますが、鍵の生成・暗号化処理に必要な時間もわずかに増えます。CCNAの学習では1024〜2048ビット程度が一般的に使われます。

手順2:ローカルユーザーアカウントの作成

SSHでログインする際の認証情報として、ローカルデータベースにユーザー名・パスワードを登録します。

R1(config)# username admin secret StrongP@ssw0rd

passwordではなくsecretを使うことで、設定ファイル内でパスワードがハッシュ化されて保存され、より安全に管理できます。

手順3:VTY回線の設定

Telnet・SSHによるリモートアクセスは、VTY(Virtual TeletYpe)と呼ばれる仮想的な回線を通じて受け付けられます。VTY回線の設定で、認証方式とアクセス手段を指定します。

VTY回線の番号範囲は、機種やIOS/IOS XEのバージョンによって異なります。以下はVTY 0〜15が利用可能な機器の例です。対象機器で利用可能なすべてのVTY回線に設定します。

R1(config)# line vty 0 15
R1(config-line)# login local
R1(config-line)# transport input ssh
  • login local:手順2で作成したローカルユーザーアカウントを使って認証を行うよう指定します。
  • transport input ssh:VTY回線で受け付けるアクセス手段をSSHに限定します。この設定により、Telnetでのアクセスは自動的に受け付けられなくなります(transport input telnet sshとすれば、両方を許可することもできます)。

手順4:SSHのバージョン指定

脆弱性が指摘されているバージョン1ではなく、バージョン2を使うように明示します。

R1(config)# ip ssh version 2

設定の確認

一連の設定が終わったら、show ip ssh(SSH自体の稼働状況)と、show running-config | section line vty(VTY回線の設定内容)で確認します。

R1# show ip ssh
SSH Enabled - version 2.0
Authentication methods:publickey,keyboard-interactive,password
Authentication timeout: 120 secs; Authentication retries: 3

show ip sshで表示される項目や値は、IOS/IOS XEのバージョンや設定によって異なります。

R1# show running-config | section line vty
line vty 0 15
 login local
 transport input ssh

transport inputの行にsshのみが表示されていれば、Telnetでのアクセスが受け付けられない状態になっていることを確認できます。