目次
VTYアクセスとは?
VTYアクセスとは、TelnetやSSHによるCLIベースのリモートアクセスを意味します。コンソール接続でCiscoルータやCatalystスイッチを管理できますが、そのためには管理したい機器と直接コンソールケーブルで接続する必要があります。コンソール接続では、離れた場所にある機器を管理するには効率がよくありません。離れた場所にある機器を効率よく管理するにはVTYアクセスを行います。
Telnetは、TCPポート番号23番を利用します。Telnetはシンプルなプロトコルで、通信の暗号化を行いません。そのため、通信を盗聴されると悪意を持つユーザにログインするためのユーザID/パスワードのアカウント情報が漏れてしまうリスクがあります。一方、SSHはTCPポート番号22番を利用します。公開鍵暗号方式に基づいて通信の暗号化を行います。SSHのデータを盗聴されてもアカウント情報などが漏れてしまう心配はありません。
CiscoルータおよびCatalystスイッチでリモートからのTelnetやSSHのVTYアクセスを受け入れるには、あらかじめVTYラインの設定をしておく必要があります。VTYライン上で受け入れるプロトコルは、transport inputコマンドで指定します。transport inputコマンドで指定できるプロトコルの例は以下のようになります。
Router(config)#line vty 0 4 Router(config-line)#transport input ? all All protocols lapb-ta LAPB Terminal Adapter lat DEC LAT protocol none No protocols pad X.3 PAD rlogin Unix rlogin protocol ssh TCP/IP SSH protocol telnet TCP/IP Telnet protocol udptn UDPTN async via UDP protocol v120 Async over ISDN
さまざまなプロトコルを指定することができますが、一般的にはtelnetまたはsshを利用します。VTYアクセスとしてtelnetのみを受け入れたいときにはtransport input telnetを指定します。また、sshのみを受け入れるのであればtransport input sshを指定します。複数のプロトコルを指定することも可能です。
リモートからTelnetやSSHによりVTYアクセスすると、VTYラインにログインすることになります。VTYラインは、VTYアクセスを受け付ける仮想的なインタフェースのことでライン番号は、デフォルトで0~4の5つです。現在のIOSでは、さらに拡張してより多くのVTYラインを扱うことができます。1つのデバイスで複数のVTYアクセスを受け付けることができ、その際のVTYライン番号の割り当ては、VTYアクセスを受けた時点で空いているVTYライン番号を使います。認証を設定しているラインと設定していないラインが混在すると、セキュリティ上好ましくないので基本的にすべてのVTYラインに対してきちんと認証を設定してください。
CCNA試験で重要
CCNA試験では、VTYアクセスについての問題が頻出します。以降のVTYアクセスの設定のコマンドはソラで打てるぐらいになっておいてください。試験だけでなく、実際にルータを扱う上でも必ずと言っていいほどVTYアクセスの設定が必要です。
Telnetアクセスの設定
リモートからのVTYアクセスを受け入れるには、基本的に認証を行います。Telnetのアクセスの場合は、VTYライン上のパスワードによる認証やルータで定義しているユーザ名/パスワードによる認証を行うことができます。
VTYライン上で認証を有効にするコマンドがloginコマンドです。loginコマンドでは、VTYラインに設定されているパスワードによる認証を行います。
loginコマンドでVTYラインのパスワード認証を有効にしているのに、VTYライン上でパスワードを設定していない場合は、認証できずにVTYアクセスは次のように拒否されることになります。
Password required, but none set
そして、より柔軟な認証を行うには、VTYライン上でlogin localコマンドを入力します。これにより、ルータ上に定義されているユーザ名とパスワードによる認証を行うことができます。
なお、VTYライン上でno loginコマンドを入力すると、認証なしにTelnetでVTYアクセス可能です。ですが、ルータのIPアドレスさえわかればだれでもTelnetアクセスできてしまうことになるので、セキュリティを考慮すると推奨できません。
SSHアクセスの設定
ルータでSSHアクセスを受け入れるための設定は次の手順で行います。
- ドメイン名、ホスト名の設定
- 公開鍵の生成
- VTYでのSSHの有効化、認証の有効化
- ユーザ名、パスワードの設定
1.ドメイン名、ホスト名の設定
暗号化に利用する公開鍵を生成するために、ルータに一意のドメイン名とホスト名の設定を行います。
(config)#ip domain name <domain>
(config)#hostname <host>
<domain> : ドメイン名
<host> : ホスト名
2.公開鍵の生成
公開鍵を生成します。コマンドを入力すると、生成する公開鍵のビット長を尋ねられます。適切な鍵のビット長を入力してください。
(config)#crypto key generate rsa
以下は、crypto key generate rsaコマンドによる公開鍵生成の出力例です。
R1(config)#crypto key generate rsa The name for the keys will be: R1.n-study.com Choose the size of the key modulus in the range of 360 to 2048 for your General Purpose Keys. Choosing a key modulus greater than 512 may take a few minutes. How many bits in the modulus [512]: 1024 % Generating 1024 bit RSA keys, keys will be non-exportable...[OK]
3.VTYのSSHの有効化、認証の有効化
VTY上でSSHを有効にします。デフォルトでtransport input allなので、特に設定しなくてもSSHは有効化されています。SSHはユーザ名とパスワードによる認証が必要です。login localコマンドでユーザ名とパスワードの認証を有効化します。
(config)#line vty 0 4
(config-line)#login local
(config-line)#transport input ssh
4.ユーザ名、パスワードの設定
認証に利用するユーザ名/パスワードを設定します。
(config)#username <user> password <password>
<user> : ユーザ名
<password> : パスワード
関連記事
セキュリティ対策としてSSHの待ち受けポート番号を変更します。以下のページでSSHの待ち受けポート番号の変更について詳しく解説しています。
また、VTYアクセスのログイン試行を制限することで、ブルートフォース攻撃への対策ができます。VTYアクセスのログイン試行を制限することについて、以下のページで詳しく解説しています。
Ciscoルータ、CatalystスイッチからTelnetを実行
CiscoルータおよびCatalystスイッチはTelnetアクセスを受けるだけでなく、自らTelnetをして他のデバイスにログインすることもできます。他のデバイスにTelnetするには、ユーザEXECモードあるいは特権EXECモードで次のコマンドを入力します。
#telnet {<ip-address>|<host>}
このコマンドにより指定したIPアドレスまたはホスト名に対してTelnetを行います。ホスト名を利用するときにはip hostコマンドやDNSを設定して名前解決ができることが前提です。
なお、Telnetするには「telnet」というコマンド自体を省略することができます。つまり、IPアドレスやホスト名を入力して[Enter]キーを押すと、指定されたIPアドレスまたはホスト名に対してTelnetを行います。
ここで、注意したいことがあります。間違ったコマンドを入力すると、そのコマンドをホスト名として解釈し、Telnetするために名前解決を行おうとすることです。
Router#aaa Translating "aaa"...domain server (255.255.255.255) (255.255.255.255) Translating "aaa"...domain server (255.255.255.255) % Unknown command or computer name, or unable to find computer address
「aaa」という間違ったコマンドを入力すると、Ciscoデバイスは「ホスト名「aaa」に対するTelnetをしなさい」と解釈して、「aaa」の名前解決を行うためにデフォルトではブロードキャストで行おうします。この動作で設定作業が中断されてしまます。これを防ぐためには、グローバルコンフィグレーションモードで次のコマンドを入力します。
(config)#no ip domain-lookup
no ip domain-lookupを設定した様子が次のログです。
Router#configure terminal Enter configuration commands, one per line. End with CNTL/Z. Router(config)#no ip domain-lookup Router(config)#end Router#aaa Translating "aaa" Translating "aaa" % Unknown command or computer name, or unable to find computer address
間違ったコマンドを入力しても、名前解決を行わず、タイムロスがなくなります。設定作業中は、no ip domain-lookupを入れておくことをオススメします。
Ciscoルータ、CatalystスイッチからSSHを実行
CiscoルータおよびCatalystスイッチは、SSHクライアントとして他のデバイスにVTYアクセスすることもできます。SSHクライアントとして他のデバイスにリモートログインするには、ユーザEXECモードまたは特権EXECモードで次のコマンドを利用します。
#ssh -l <user> {<ip-address|host-name>}
このコマンドにより指定したIPアドレスまたはホスト名に対して、指定したユーザ名でSSHのログインを試行します。ホスト名を利用する場合は、telnetコマンドと同様に名前解決が可能であることが前提です。SSHクライアントとして、他のデバイスへログインする際の出力例は、次のようになります。
R2#ssh -l cisco 192.168.1.1 Password: R1>
リモートログイン先のログ出力の有効化(terminal monitor)
CiscoルータやCatalystスイッチにTelnet/SSHでリモートログインしたとき、デフォルトではログが出力されません。リモートログイン先のログを出力したいときには、特権EXECモードでterminal monitorコマンドを入力します。
#terminal monitor
terminal monitorの例
terminal monitorコマンドの例を挙げます。以下のログ出力は、R1のコンソールからR2にTelnetしています。terminal monitorコマンドを設定していないと、R2でグローバルコンフィグレーションモードから抜けてもログが出力されません。
R1#telnet 192.168.12.2 Trying 192.168.12.2 ... Open User Access Verification Password: R2>enable Password: R2#conf t Enter configuration commands, one per line. End with CNTL/Z. R2(config)#exit R2#
R2で特権EXECモードからterminal monitorコマンドを入力したあとに、グローバルコンフィグレーションモードから抜けるとログが表示されるようになります。もちろん、グローバルコンフィグレーションモードから抜けたとき以外のログも出力されるようになります。
R2#terminal monitor R2#conf t Enter configuration commands, one per line. End with CNTL/Z. R2(config)#exit R2# *Mar 1 00:04:42.735: %SYS-5-CONFIG_I: Configured from console by vty0 (192.168.12.1) R2#
VTYアクセスの中断、再開方法
Ciscoデバイスから他のデバイスにVTYアクセスした場合を考えます。VTYアクセスすると、VTYアクセス先のデバイスのCLIになり、CLIから設定の変更やshowコマンドを実行することができます。VTYアクセスを中止するには、exitもしくはlogoutコマンドを入力すれば元のデバイスのCLIに戻ります。ただし、これでは完全にVTYアクセスが切断されます。
R1>exit [Connection to 10.1.1.1 closed by foreign host] Switch>
VTYアクセスのTelnet/SSHセッションを保持したまま、元のデバイスのCLIに戻ることをVTYアクセスの中断といいます。VTYアクセスを中断するには、[Ctrl+Shift+6]キーを押して、その後に[x]キーを押します。
R1>[Ctrl+Shift+6] x Switch#
VTYアクセスを中断した場合、保持しているVTYアクセスを表示するには、show sessionコマンドを使います。
Switch#show session Conn Host Address Byte Idle Conn Name * 1 10.1.1.1 10.1.1.1 0 2 10.1.1.1
「*」は直前のVTYアクセスを表します。その後の数字がセッション番号です。保持しているVTYアクセスを再開するには、resumeコマンドを利用します。
#resume <session-number>
再開するときは、resumeコマンド自体を省略することができます。セッション番号だけ指定すれば、そのセッションを再開することができます。セッション番号も省略した場合は、「*」のついている直前のセッションを再開します。つまり、セッションを中断して元のCLIに戻ってきた、何も入力せずに<Enter>キーを入力すると直前のセッションに戻ります。
Switch#[Resuming connection 1 to 10.1.1.1 ... ] R1>
保持しているVTYアクセスを切断したい場合は、次のコマンドを入力してください。
#disconnect <session-number>
VTYアクセスの確認
VTYアクセスの確認を行うには、主に次のコマンドがあります。
- show users
- show session
show usersは自分に対してのVTYアクセスを表示します。そして、show sessionは自分から行っているVTYアクセスを表示します。次のサンプルネットワークでshow usersおよびshow sessionを見てみます。
まず、R2でshow usersを見ると次のようになります。
R2>show user Line User Host(s) Idle Location * 0 con 0 idle 00:00:00 18 vty 0 idle 00:00:03 10.1.1.1
これを見ると、R2はR1(10.1.1.1)からTelnetされていることがわかります。「18 vty 0」の「18」はコンソールなども含めた全体のライン番号です。VTYライン番号はこの例では「0」を使っています。自分に対してのTelnetを強制的に切断するときは、clear lineコマンドを使います。もし、この例でTelnet接続を切断したいときは、show usersのVTYライン番号を使って
#clear line 18
とコマンドを入力するとR1からR2へのTelnetを強制的に切断できます。
次に、R1でshow sessionを見ると次のようになります。
R1#show session Conn Host Address Byte Idle Conn Name * 1 10.1.1.2 10.1.1.2 0 0 10.1.1.2
R1は10.1.1.2(R2)にTelnetしていて、そのセッション番号が1であることが確認できます。
Ciscoのキホン
- Ciscoルータのメモリ領域とコンフィグレーションレジスタ
- Ciscoルータの起動シーケンス
- 設定のための準備
- Cisco機器の設定ファイル running-configとstartup-config
- Cisco機器の設定の流れ
- Cisco CLIの基礎知識 ~コマンドの種類とモード~
- Cisco機器のインタフェース
- Cisco CLIのヘルプと補完
- Cisco CLIの主なエラーメッセージ
- Cisco 設定コマンドの削除
- default interfaceコマンド ~インタフェースの設定を初期化~
- Cisco コマンドの一括入力
- doコマンド ~コンフィグレーションモードからEXECコマンドを実行~
- interface rangeコマンド ~複数インタフェースの一括設定~
- showコマンド表示のフィルタ ~見たい情報だけを適切に表示~
- Cisco機器の時刻設定
- Cisco IOS 名前解決の設定
- terminal lengthコマンド ~コマンド出力の表示行数の設定~
- debugコマンド ~リアルタイムの動作確認~
- CLIログイン時に自動的に特権EXECモードに移行する
- Cisco 設定ファイルの保存とバックアップ
- 設定ファイルのバージョン管理 ~archiveコマンド~
- IOSファイルシステムの操作
- Catalystスイッチの管理 ~スイッチにIPアドレスを設定する意味~
- VTYアクセス(Telnet/SSH)によるリモート管理
- Cisco IOS SSH待ち受けポート番号の変更
- terminal monitorコマンド ~Telnet/SSHのログイン先のログを表示~
- 多段階Telnetのセッション中断
- Cisco パスワードの最小文字数設定
- ログイン試行の制限 ~login block-forコマンド~
- Cisco 初期設定の例
- CDP ~つながっている機器はなに?~
- Ciscoルータ パスワードリカバリ
- Catalystスイッチのパスワードリカバリ