[index] CentreCOM x510シリーズ・AT-IX5-28GPX コマンドリファレンス 5.4.3

# 運用・管理 / Secure Shell

SSHサーバー
SSHクライアント
sshコマンド
SSHサーバーへのログイン
SSHサーバー上でのコマンド実行
copyコマンド
SCPによるリモートコピー
SFTPによるリモートコピー

Secure Shell（SSH）は、暗号/認証技術を利用してネットワーク経由の端末ログインなどを安全に行うためのプロトコルです。通信内容の暗号化により盗聴や改ざんを防ぐほか、サーバーやユーザーの認証機能によってなりすましを防ぐ効果もあります。
また、サブアプリケーションであるSCP（Secure CoPy）やSFTP（Secure File Transfer Protocol）によって安全なファイル転送を行ったり、ポートフォワーディング機能を用いて簡易的なVPNを構築したりすることもできます。
本製品は、SSHバージョン1とバージョン2に対応したサーバー機能とクライアント機能を備えています（IPv4、IPv6両対応）。認証方式はパスワード認証と公開鍵認証（DSA、RSA）をサポートしています（SSHバージョン1は同バージョンの仕様によりRSAのみ）。

## SSHサーバー

SSHサーバー機能は初期設定では無効です。
以下では、本製品をSSHサーバーとして動作させるための基本設定について説明します。SSHはIP上で動作するため、IPの設定までは済んでいるものとします。
ここでは、初期設定のユーザーである「manager」と、新規に登録したユーザー「admin」に対し、SSHバージョン2によるログインを許可するよう設定します。managerはパスワード認証のみ、adminはパスワード認証とDSA公開鍵認証の両方を使えるものとします。なお、SSHバージョン1は無効にします。

1. 権限レベル15の新規ユーザー「admin」を登録します。

       awplus(config)# username admin privilege 15 password adkf8KH! ↓

2. SSHサーバーのホスト鍵（Host Key）を作成します。SSHサーバーを起動するには、あらかじめホスト鍵を作成しておく必要があります。これには、crypto key generate hostkeyコマンドを使います。本例ではSSHバージョン2だけを使用するため、同バージョン用のDSA鍵を作成します（SSHバージョン1も併用する場合は、同バージョン用のRSA1鍵も作成する必要があります）。

       awplus(config)# crypto key generate hostkey dsa ↓
       Generating host key (1024 bits dsa)
       This may take a while. Please wait ... Done

       WARNING: The SSH server must now be enabled with "service ssh"

3. 初期設定ではバージョン1、2の両方が有効なので、ssh serverコマンドを使ってバージョン2だけを使うよう設定します。

       awplus(config)# ssh server v2only ↓

4. SSHサーバーを有効化します。

       awplus(config)# service ssh ↓

   > Note - service sshコマンドを実行するとき、少なくともSSHバージョン2用のホスト鍵が1つ（DSA鍵かRSA鍵）存在していないと、「SSHv2 host key does not exist. Try again after creating host key.」というメッセージが出て、SSHサーバーは起動しません。

5. SSHサーバーの有効化直後は、SSHログインが可能なユーザーは存在しません。SSHログインを許可するには、ssh server allow-usersコマンドを使います。ここでは、初期設定の管理者ユーザー「manager」と新規作成した管理者ユーザー「admin」にSSHログインを許可するよう設定します。

       awplus(config)# ssh server allow-users manager ↓
       awplus(config)# ssh server allow-users admin ↓

6. 以上でmanagerとadminがパスワード認証でログインできるようになりました。続いて、adminに対する、公開鍵認証の設定を行います。クライアントPC上において、SSHソフトウェア付属のユーティリティーなどでユーザー「admin」の公開鍵ペアを作成してください。公開鍵のアルゴリズムには、DSA（バージョン2）、RSA（バージョン2）、RSA1（バージョン1）の3種類がありますが、ここではバージョン2用のDSA鍵を使うものとします。
7. PC上で作成したユーザー「admin」用のDSA公開鍵をダウンロードします。ここでは、公開鍵がpchost.example.comというコンピューター上の「admin_id_dsa.pub」という名前のファイルに格納されているものとし、同コンピューターからSCPプロトコルでローカルファイルシステムに転送（リモートコピー）するものとします。

       awplus(config)# end ↓
       awplus# copy scp://pcuser@pchost.example.com/tmp/admin_id_dsa.pub flash ↓
       Enter destination file name [admin_id_dsa.pub]: ↓
       pcuser@pchost.example.com's password: XXXXXXXX ↓ （実際には表示されません）
       Copying..
       Successful operation

   > Note - リモートコピーの方法については、copyコマンドのページや「運用・管理」の「ファイル操作」をご覧ください。

8. adminのDSA公開鍵を「信頼済みユーザー公開鍵リスト」（Authorized Keysデータベース）に登録します。これでadminは、公開鍵認証によるログインができるようになります。

       awplus# configure terminal ↓
       Enter configuration commands, one per line.  End with CNTL/Z.
       awplus(config)# crypto key pubkey-chain userkey admin admin_id_dsa.pub ↓

設定は以上です。
■ SSHサーバーへの接続を特定のホストからだけに制限することもできます。これには、ssh server allow-usersコマンドの省略可能な第2パラメーターHOSTNAME-PATTERNを使います。ホストによるアクセス制限はSSHユーザーごとに設定します。たとえば、SSHユーザー「manager」に対し、192.168.10.186からのみ接続を許可するには、次のようにします。

    awplus(config)# ssh server allow-users manager 192.168.10.186 ↓

IPアドレスを範囲指定することもできます。たとえば、SSHユーザー「manager」に対し、192.168.10.0/24の範囲からのみ接続を許可するには、次のようにします。アスタリスク（*）はワイルドカードの指定で、任意の文字列にマッチします。

    awplus(config)# ssh server allow-users manager 192.168.10.* ↓

> Note - ワイルドカードを用いてIPアドレスを範囲指定した場合、「% Warning: ssh server resolve-hosts is not enabled.」という警告メッセージが出ますが、次項で述べる「ホスト名による指定」を使っていない場合は無視してかまいません。

■ HOSTNAME-PATTERNをホスト名で指定することもできますが、その場合は次の追加設定が必要です。

- 使用するDNSサーバーの設定（ip name-serverコマンド。初期状態では未設定）
- DNSへの問い合わせ機能の有効化（ip domain-lookupコマンド。初期状態で有効）
- ログイン元ホスト名の逆引き有効化（ssh server resolve-hostsコマンド。初期状態では無効）

たとえば、delirium.example.comという名前を持つホストからのみ、ユーザー「admin」でのログインを許可するには、次のようにします。

    awplus(config)# ip name-server 172.16.10.8 ↓
    awplus(config)# ssh server resolve-hosts ↓
    awplus(config)# ssh server allow-users admin delirium.example.com ↓

> Note - ssh server resolve-hostsコマンドを実行せずにホスト名を指定した場合は「% Warning: ssh server resolve-hosts is not enabled.」という警告メッセージが出ます。ホスト名を指定する場合は必ずssh server resolve-hostsコマンドを実行して、ホスト名の逆引きを有効化してください。逆引きが無効の場合、ホスト名パターンを含むエントリーには一切マッチしませんのでご注意ください。

■ SSHサーバーの状態はshow ssh serverコマンドで確認できます。

    awplus# show ssh server ↓
    Secure Shell Server Configuration
    ------------------------------------------------------------
    SSH Server                         : Enabled
    Protocol                           : IPv4,IPv6
    Port                               : 22
    Version                            : 2
    Services                           : scp, sftp
    User Authentication                : publickey, password
    Resolve Hosts                      : Disabled
    Session Timeout                    : 0 (Off)
    Login Timeout                      : 60 seconds
    Maximum Startups                   : 10
    Debug                              : NONE

■ 作成したホスト鍵の情報はshow crypto key hostkeyコマンドで確認できます。

    awplus# show crypto key hostkey ↓
    Type    Bits  Fingerprint
    -------------------------------------------------------------
    dsa     1024  2e:d7:cf:82:42:8e:74:fa:f4:ca:14:3c:0c:ab:42:fd

    awplus# show crypto key hostkey dsa ↓
    ssh-dss AAAAB3NzaC1kc3MAAACBAMpRf/HUiLLvgfR0O43RUZz7/VupV6rjgSPLRpLbYRbt9jP4oBJG
    9kNQtVGsCfAixIsW+3je+Lke2NOQTrwmoYfVfwN/9efJkeGjPy7QYcoZ4kLZFHrg4Tcsuwfg4QAD17kx
    nAIhT8rTh5VHH1XPOuahv51+YsLsmJybObm02uQTAAAAFQCEDAD4nP4XorJ2EMngYzHjMrxIlQAAAIB4
    joc6+rap4lfCr1A1Us1j+2jcCecmjnyJJFt+kM/EHkwAilcPZJVxPP4QTQSXMDu/yRvwvDWOaQa+C+nl
    +1JMd/DtYvZMAzmAQkaE0NPJ3sYgoRiCvlA5Gpr2QCBcQehdkSb/VskX3SHgvoICM/1qbWA64uq6TpBz
    QrMBguFo9QAAAIEAvckA/HlzFMdniNpvM1PoPMH4eh9ib8W23w17lms8jpZ0yUpSkP/A++HKLWVUkOaP
    4rarGnsBQlrLabRNJdb7Ew05Zi2ffIXTGaJGF6tJe/eoAhYRDMi7r96LVM03ZrYS/lkO1/C/OeIf+/KM
    UM0gklDKfwuBCSXapPB7pxbRVmM=

■ ユーザーの公開鍵の情報はshow crypto key pubkey-chain userkeyコマンドで確認できます。

    awplus# show crypto key pubkey-chain userkey admin ↓
     No Type  Bits Fingerprint                                     Comment
    -------------------------------------------------------------------------------
      1 dsa   1024 a6:af:50:12:63:56:0c:cb:c5:55:45:e3:6e:e9:c5:84 admin@zebra2

    awplus# show crypto key pubkey-chain userkey manager 1 ↓
    ssh-dss AAAAB3NzaC1kc3MAAACBANr2Pdv1JUYEcZ1WEsVspCQPKcfcvIE/r72O+xURyWw8UNEIpYMw
    4K5uARFJcC5NJqRztIQdq2Gw5d3jVkSgzgDYo/FRfendpn0f7wYx5zaI0apdC90Z03EHUyoY+To2pbHJ
    6JmuvxwHKO4ZRwUYje9JGJFo0P2XVrf1mSauXo+FAAAAFQDHTbswc8KekH6tIGlZIWJMD8oZoQAAAIEA
    zpQTJC1XZHBpZIqa6tQ42zt8q30pNxFUkJHUdahhV8+zuHyNgumDfAB57nlmdDOjbUzq2DrNVeU+fipQ
    M9ZZmZbeZNLSKSIl8sCMuHNdI2eISYygoJxQSKe6gMlH/Z6B5FOdhf+0m96DudiSNxc82fXmqPs+fSnv
    owhDiMlDPF8AAACAP+h/1iWUOhvO/abnwN0YK0N6W/F0IMIxgy+fv2rKw1hwFx/r5WAfzNQW6oIN3O+j
    ZDsx1pkkF4xhwtND7GNS5OvTKob6y7bQkQetHhXekyX9UsiGBPuVJXHWkeJv9fV5q5EudyJCn4nB6vUb
    zYz4h1wZJwQGd5toRolb12Pg91Q= admin@zebra2

■ 現在ログインしているユーザーの一覧を確認するには、show usersコマンドを実行します。

    awplus> show users ↓

■ 確立中のSSHセッションはshow sshコマンドで確認できます。

    awplus# show ssh ↓
    Secure Shell Sessions:

       ID Type Mode   Peer Host        Username   State       Filename
    ------------------------------------------------------------------------------
     3402 ssh  server 192.168.20.2     admin      open

■ 確立中のSSHセッションを切断するには、clear sshコマンドを使います。

    awplus# clear ssh 3402 ↓

## SSHクライアント

本製品には、SSHクライアント機能を持つコマンドとして次の2つが用意されています。

- sshコマンド
  SSHサーバーにログインしたり、SSHサーバー上でコマンドを実行させたりするときに使います。
- copyコマンド
  SSHの付加サービスであるSCP（Secure CoPy）やSFTP（Secure FTP）を利用して、SSHサーバーとの間でファイルをリモートコピーするときに使います。SCPではアップロードとダウンロードの両方が、SFTPではダウンロードのみが可能です。

以下では、それぞれの使い方について解説します。SSHはIP上で動作するため、IPの設定までは済んでいるものとします。なお、copyコマンドについては、「運用・管理」の「ファイル操作」で詳しく説明しているため、ここでは簡単な説明にとどめます。

### sshコマンド

sshコマンドは、SSHサーバーにログインしたり、SSHサーバー上でコマンドを実行させたりするためのコマンドです。

#### SSHサーバーへのログイン

■ SSHサーバーにログインするには、次のようにします。
ここでは、SSHサーバー192.168.10.5にユーザー名zeinでログインしています。

    awplus# ssh user zein 192.168.10.5 ↓
    The authenticity of host '192.168.10.5 (192.168.10.5)' can't be established.
    RSA key fingerprint is 35:7f:a5:0d:f1:70:a7:e4:5c:b2:27:fe:54:d8:9a:f3.
    Are you sure you want to continue connecting (yes/no)? yes ↓
    Warning: Permanently added '192.168.10.5' (RSA) to the list of known hosts.
    zein@192.168.10.5's password: XXXXXXXX ↓ （実際には表示されません）
    Last login: Wed Sep 14 14:01:55 2011 from awplus
    Welcome to Darwin!
    [1488] zein@bird:~%

上の例にもありますが、初めてSSHサーバーに接続したときは、ログイン認証の前に次のようなメッセージが表示されます。

    The authenticity of host '192.168.10.5 (192.168.10.5)' can't be established.
    RSA key fingerprint is 35:7f:a5:0d:f1:70:a7:e4:5c:b2:27:fe:54:d8:9a:f3.
    Are you sure you want to continue connecting (yes/no)?

これは、SSHサーバーから受け取ったホスト鍵が、本製品の「確認済みSSHサーバーリスト」（Known Hostsデータベース）に未登録であることを示すメッセージです。
「key fingerprint is ...」の部分にホスト鍵のフィンガープリントが表示されているので、これを見て該当サーバーに間違いないと判断した場合は、「Are you sure you want to continue connecting (yes/no)?」（接続を続行してもよいか？）の問いに対して、「yes」と入力してEnterキーを押してください。
接続先が正しいサーバーかどうか確認できず、接続を続行したくない場合は「no」を入力してEnterキーを押せば、sshコマンドは中断してコマンドプロンプトに戻ります。
「yes」を入力して接続を続行した場合は、続いて次のメッセージが表示されます。

    Warning: Permanently added '192.168.10.5' (RSA) to the list of known hosts.

これは、該当サーバーのホスト鍵をKnown Hostsデータベースに登録したという意味です。次回以降同じサーバーに接続したときは、すでにKnown Hostsデータベースに該当サーバーのホスト鍵が登録されているため、次のように確認メッセージは出なくなります。

    awplus> ssh user zein 192.168.10.5 ↓
    zein@192.168.10.5's password:

■ ホスト鍵をKnown Hostsデータベースに登録したのち、サーバー側でホスト鍵が変更された場合は、該当サーバーへの接続時に次のようなメッセージが表示されます。

    awplus# ssh 192.168.10.5 ↓
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
    Someone could be eavesdropping on you right now (man-in-the-middle attack)!
    It is also possible that the RSA host key has just been changed.
    The fingerprint for the RSA key sent by the remote host is
    f2:a8:87:eb:22:34:26:9b:2a:b2:2f:d2:16:b0:6c:89.
    Please contact your system administrator.
    RSA host key for 192.168.10.5 has changed and you have requested strict checking.
    Host key verification failed.
    awplus#

これは、SSHサーバーから受け取ったホスト鍵が、本製品のKnown Hostsデータベースに登録されているものと異っていることを示すメッセージです。悪意を持った第3者が該当サーバーに偽装した別のサーバーを設置している可能性があるため、該当サーバーへの接続を中断して、ユーザーにチェックを求めているのです。
このようなときは、可能であれば該当サーバーの管理者に連絡を取り、ホスト鍵を変更したかどうかを確認します。変更した場合は新しい鍵のフィンガープリントも聞くとよいでしょう。その上で、問題ないと判断した場合は、次のようにして対処します。

1. show crypto key pubkey-chain knownhostsコマンドを実行して、Known Hostsデータベースの内容を表示し、古いホスト鍵の鍵番号を調べます。ここでは、5番がそれのようです。

       awplus# show crypto key pubkey-chain knownhosts ↓
        No Hostname         Type Fingerprint
       -------------------------------------------------------------------------
         1 afrika.example.c dsa  a0:91:f6:52:b2:98:f5:9b:90:3d:51:82:96:15:29:24
         2 192.168.10.2     dsa  71:45:be:18:35:42:03:85:1a:42:ae:b3:3f:37:d6:51
         3 192.168.20.2     dsa  71:45:be:18:35:42:03:85:1a:42:ae:b3:3f:37:d6:51
         4 172.16.10.3      dsa  d3:d6:63:39:f4:ac:5d:c7:00:7a:28:dd:f3:a9:12:31
         5 192.168.10.5     rsa  35:7f:a5:0d:f1:70:a7:e4:5c:b2:27:fe:54:d8:9a:f3
         6 10.100.10.100    rsa  2a:6f:4f:c4:5f:6a:e6:35:1c:39:aa:38:c1:7b:a5:1c

2. crypto key pubkey-chain knownhostsコマンドをno形式で実行し、Known Hostsデータベースから古いホスト鍵の情報を削除します。

       awplus# configure terminal ↓
       Enter configuration commands, one per line.  End with CNTL/Z.
       awplus(config)# no crypto key pubkey-chain knownhosts 5 ↓
       awplus(config)# end ↓

3. sshコマンドを実行して、再度該当サーバーに接続します。今度はKnown Hostsデータベースにホスト鍵が登録されていないので、初回接続時と同じように接続続行の確認プロンプトが出ます。サーバー管理者から教わったフィンガープリントと表示されたフィンガープリントを比較し、正しいサーバーであることを確認したら「yes」と答えてログインします。

       awplus# ssh user zein 192.168.10.5 ↓
       The authenticity of host '192.168.10.5 (192.168.10.5)' can't be established.
       RSA key fingerprint is f2:a8:87:eb:22:34:26:9b:2a:b2:2f:d2:16:b0:6c:89.
       Are you sure you want to continue connecting (yes/no)? yes ↓
       Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
       zein@192.168.10.5's password:

4. これで、新しいホスト鍵がKnown Hostsデータベースに登録されたので、次回以降は確認メッセージがでなくなります。

■ これまでの例では、初回接続時にホスト鍵の確認を求めるメッセージが表示されていましたが、あらかじめホスト鍵をKnown Hostsデータベースに登録しておけば、この手順を省くことができます。これには、crypto key pubkey-chain knownhostsコマンドを通常形式で実行します。

    awplus(config)# crypto key pubkey-chain knownhosts 192.168.10.5 rsa ↓
    192.168.10.5 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAxYYxBFU5Xyqyv0YfAyLg8TOrWvhG3VWoWv
    QX/MYTdym4uLRAejxBp1DEpRYuEe34j5i4oVfhYjhfCQthbzLAyaTAyTD40hHIvaJL+CAA3w+TjnTUIb
    bv+IdVGdr3v2i5U6TkXeSuxWWvc8jsPcRnrKGzEPRfWKH/w1KIGvyb9e8=
    Are you sure you want to add this public key (yes/no)? yes ↓

このコマンドを実行すると、指定したサーバーに接続してホスト鍵を取得し、鍵の内容を表示した上で、確認プロンプトを出します。ここで「yes」と答えれば、該当サーバーのホスト鍵をKnown Hostsデータベースに事前登録できます。

#### SSHサーバー上でのコマンド実行

■ SSHサーバー上でコマンドを実行させ、その結果を端末画面に表示させるには、sshコマンドの最終パラメーターとしてサーバー上で実行させるコマンド行を指定します。

> Note - sshコマンドでコマンド行を指定したときは、指定したコマンド行の実行後にコネクションが切断されます。コマンド行を指定しなかったときは、前述のとおりSSHサーバーにログインして対話型セッションを開始します。

たとえば、次の例では、SSHサーバー10.100.10.100上でユーザーzeinに「netstat -an -f inet」というコマンド行を実行させ、結果を本製品の管理端末上に表示させています。

    awplus# ssh user zein 10.100.10.100 netstat -an -f inet ↓
    zein@10.100.10.100's password: XXXXXXXX ↓ （実際には表示されません）
    Active Internet connections (including servers)
    Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
    tcp4       0      0  10.100.10.100.22       10.100.10.1.38199      ESTABLISHED
    tcp4       0      0  127.0.0.1.1033         127.0.0.1.976          ESTABLISHED
    tcp4       0      0  127.0.0.1.976          127.0.0.1.1033         ESTABLISHED
    tcp4       0      0  *.22                   *.*                    LISTEN
    tcp4       0      0  *.*                    *.*                    CLOSED
    tcp4       0      0  *.80                   *.*                    LISTEN
    tcp4       0      0  127.0.0.1.8005         *.*                    LISTEN
    tcp46      0      0  *.8009                 *.*                    LISTEN
    tcp4       0      0  127.0.0.1.5432         127.0.0.1.49154        ESTABLISHED
    tcp4       0      0  127.0.0.1.49154        127.0.0.1.5432         ESTABLISHED
    tcp46      0      0  *.8080                 *.*                    LISTEN
    tcp4       0      0  *.5432                 *.*                    LISTEN
    tcp4       0      0  *.*                    *.*                    CLOSED
    tcp4       0      0  127.0.0.1.1033         127.0.0.1.1019         ESTABLISHED
    tcp4       0      0  127.0.0.1.1019         127.0.0.1.1033         ESTABLISHED
    tcp4       0      0  127.0.0.1.631          *.*                    LISTEN
    tcp4       0      0  *.23                   *.*                    LISTEN
    tcp4       0      0  *.139                  *.*                    LISTEN
    tcp4       0      0  127.0.0.1.1033         *.*                    LISTEN
    ...
    awplus#

### copyコマンド

copyコマンドは、ローカルファイルのコピーだけでなく、ネットワーク上のリモートホストとの間でファイルをリモートコピーする場合にも使用できます。copyコマンドでは、リモートコピー用のプロトコルとしてTFTP、HTTP、SCP、SFTPの4種類を使用できますが、ここでは、SCPとSFTPについてのみ簡単に説明します。copyコマンドの詳細については、copyコマンドのページおよび「運用・管理」の「ファイル操作」をご覧ください。

#### SCPによるリモートコピー

SCP（Secure CoPy）を用いる場合、SSHサーバーからSSHクライアントへのダウンロードと、SSHクライアントからSSHサーバーへのアップロードの両方が可能です。
■ SCPを利用してSSHサーバーからファイルをダウンロードするには、次のようにします。

    awplus# copy scp://zein@10.100.10.100/tmp/testtest.cfg flash ↓
    Enter destination file name [testtest.cfg]:
    zein@10.100.10.100's password: XXXXXXXX ↓ （実際には表示されません）
    Copying..
    Successful operation

■ SCPを利用してSSHサーバーにファイルをアップロードするには、次のようにします。

    awplus# copy testtest2.cfg scp://zein@10.100.10.100/tmp/ ↓
    Enter destination file name [testtest2.cfg]:
    zein@10.100.10.100's password: XXXXXXXX ↓ （実際には表示されません）
    Successful operation

#### SFTPによるリモートコピー

SFTP（Secure SFTP）を用いる場合は、SSHサーバーからSSHクライアントへのダウンロードだけが可能です。
■ SFTPを利用してSSHサーバーからファイルをダウンロードするには、次のようにします。

    awplus# copy sftp://zein@10.100.10.100/tmp/aaaaa.txt flash ↓
    Enter destination file name [aaaaa.txt]:
    zein@10.100.10.100's password:
    Copying..
    Successful operation

(C) 2012 - 2014 アライドテレシスホールディングス株式会社

PN: 613-001763 Rev.F