運用・管理 / Secure Shell


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


Secure Shell(SSH)は、暗号/認証技術を利用してネットワーク経由の端末ログインなどを安全に行うためのプロトコルです。通信内容の暗号化により盗聴や改ざんを防ぐほか、サーバーやユーザーの認証機能によってなりすましを防ぐ効果もあります。

また、サブアプリケーションであるSCP(Secure CoPy)やSFTP(Secure File Transfer Protocol)によって安全なファイル転送を行ったり、TCPフォワーディング(ポートフォワーディング)機能を用いて簡易的なVPNを構築したりすることもできます。

本製品は、SSHバージョン2に対応したサーバー機能とクライアント機能を備えています(IPv4、IPv6両対応)。認証方式はパスワード認証と公開鍵認証(RSA、ECDSA、ED25519)をサポートしています。

SSHサーバー

SSHサーバー機能は初期設定では無効です。

なお、起動時にAMFネットワーク未検出時の拡張動作が機能した場合、SSHサーバーは有効化されますが、その設定はAMFネットワーク未検出時の一時的な設定であるため、運用上の必要性に応じて無効化してください。

以下では、本製品をSSHサーバーとして動作させるための基本設定について説明します。SSHはIP上で動作するため、IPの設定までは済んでいるものとします。

ここでは、初期設定のユーザーである「manager」と、新規に登録したユーザー「admin」に対し、SSHログインを許可するよう設定します。managerはパスワード認証のみ、adminはパスワード認証と公開鍵認証の両方を使えるものとします。

  1. 権限レベル15の新規ユーザー「admin」を登録します。
    awplus(config)# username admin privilege 15 password adkf8KH!
    

  2. SSHサーバーを有効化します。
    awplus(config)# service ssh
    
    Note
    service sshコマンドの実行時に3種類(RSA、ECDSA、ED25519)のホスト鍵(Host Key)がすべて揃っていない場合は、存在していない種類のホスト鍵が自動的に生成されます。鍵長はRSAが2048ビット、ECDSAが384ビットです。

    なお、鍵長を変えたい場合など、ホスト鍵を手動で生成するにはcrypto key generate hostkeyコマンドを使います。
    awplus(config)# crypto key generate hostkey rsa 4096
    Generating host key (4096 bits rsa)
    This may take a while. Please wait ... Done
    
    WARNING: The SSH server must now be enabled with "service ssh"
    

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

  4. 以上でmanagerとadminがパスワード認証でログインできるようになりました。続いて、adminに対する、公開鍵認証の設定を行います。クライアントPC上において、SSHソフトウェア付属のユーティリティーなどでユーザー「admin」の公開鍵ペアを作成してください。公開鍵のアルゴリズムには、RSA、ECDSA、ED25519などがありますが、ここではRSA鍵を使うものとします。

  5. PC上で作成したユーザー「admin」用のRSA公開鍵をダウンロードします。ここでは、公開鍵がpchost.example.comというコンピューター上の「admin_id_rsa.pub」という名前のファイルに格納されているものとし、同コンピューターからSCPプロトコルでローカルファイルシステムに転送(リモートコピー)するものとします。
    awplus(config)# end
    awplus# copy scp://pcuser@pchost.example.com/tmp/admin_id_rsa.pub flash
    Enter destination file name [admin_id_rsa.pub]: 
    pcuser@pchost.example.com's password: XXXXXXXX ↓ (実際には表示されません)
    Copying..
    Successful operation
    
    Note
    リモートコピーの方法については、copyコマンドのページや「運用・管理」の「ファイル操作」をご覧ください。

  6. adminのRSA公開鍵を「信頼済みユーザー公開鍵リスト」(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_rsa.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.」という警告メッセージが出ますが、次項で述べる「ホスト名による指定」を使っていない場合は無視してかまいません。
Note
アクセスが許可されていないホスト/ユーザーからSSHでログインしようとした場合、コンソール上に「sshd[3374]: fatal: mm_request_receive_expect: read: rtype 48 != type 46」のようなデバッグメッセージが表示されます。

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

たとえば、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

■ 作成したホスト鍵の情報はshow crypto key hostkeyコマンドで確認できます。
awplus# show crypto key hostkey
Type       Bits  Fingerprint
---------------------------------------------------------------
rsa        2048  SHA256:wPo/qzwNsGLKnlVj9+U48gZQxHvtntmhmFxMqI5jd6M
ecdsa       256  SHA256:1NJi1rtrI3uT2JPaWW6v/UW8xC66NWxs/MSrvdKppXs
ed25519     256  SHA256:a0Tsz1PHpIIl9YDpsPYCzMiX13FDEaiO8uqblV+WqZc

awplus# show crypto key hostkey rsa
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKtnCsVoyQvP8LAoOp0OdiW118z8tG95iwTlo14IDH
GyErnCC2OinCFwMH/nW/8qfuEpG/yQdI7cXVH6euTz4XnaL38gxsU02M1vyzCJv0DjKiI+L31g/UGCWw
rZCrG9+NKTLbi6xbnmlxWruE4hhBYZi28lCnSIVADv3YadRLdcGMspnI6MEw4UTlZQb8y51Hjy2Io2cH
a1aacYsgfxVLJ4hH8L79+UewM3YC9QAJUjJ/vyPHikxtnC6Aqpm30Pbd/S4fcs1Uix0xwDOmH2iw0tnA
bYgEeoJnq2uiR3KvIWPeHdLbf4CCwsIARKPKE1Qg+EdUowbeEO6tEDePNCOJ

■ ユーザーの公開鍵の情報はshow crypto key pubkey-chain userkeyコマンドで確認できます。
awplus# show crypto key pubkey-chain userkey admin
 No Type   Bits Fingerprint                                     Comment
-------------------------------------------------------------------------------
  1 rsa    4096 SHA256:iJ18qK5lVV3sT/jMvflfAInORmLgsf3L5TmDZt3J admin@pc

awplus# show crypto key pubkey-chain userkey admin 1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCX5FS6ZRCR/Wkl3PiFxum0czn1QCViNUZoTiwbYWOW
FCtg57erbjaC3OzsWWtHiC+q/pIahCvAGo8XJWBW1F0ckPWBIkhLmyLaxwtAEPLY/KT2lhDen9TJt3Uv
nNNQImTL5ZA1+c3JvNjEsSwUun3mi6gLG/QpUsXSwnz6m5J6AJbnEWLnniYBlQHUelBgTmh6W9eDjfCW
SNxvQco9aHpgQOg2vTAgxboGCAiiVSgrxAYR5SxUGnshuLw8d3mdQSI6W08BvTFA9QzuYaa4eBnf43Of
utA7yeVQ3m/2845CKMjrgCvvQ7isxhK1qhHuSjcGR8H58mCf75V7Wnut+o3ksc8Ts4m1BK5JEE5BWV7H
Zxx3pN01L1RgxNqqTUWcMpi53BDqhBaSxDmciUPW3ZzFkLs2V6oCZ82jl/KCPCOmENcVHjCU80l4YaOx
0OEyn1aYIbqlOC1+lBNGIpUByvfRx1W13TztrIXqqPwnsn5dsdcZlqm8jtOzf39vwD37tdH3F3bOL3ei
xBlDlDl87q43sw5Y+RHRz/n7/nxRTnqbFEvnWf8f09bShFRbGWjm3NmbVq+b6NRRsaLgw7qRqOsLf7TG
TQGMw+rpEpaAaAIFNd5Yn9pVOKYMNt+ibsNmkGMWF/j+D/aPh/PZSXidbo5mouMFnKvUXebX1cGhEQ+Q
2w== admin@pc

■ 現在ログインしているユーザーの一覧を確認するには、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は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 SHA256:32nmQJz0Gpc2EqMIDlb88qOypLOIUYmYLlNC3GTGcZU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes 
Warning: Permanently added '10.0.0.2' (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 SHA256:32nmQJz0Gpc2EqMIDlb88qOypLOIUYmYLlNC3GTGcZU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?

これは、SSHサーバーから受け取ったホスト鍵が、本製品の「確認済みSSHサーバーリスト」(Known Hostsデータベース)に未登録であることを示すメッセージです。

「key fingerprint is ...」の部分にホスト鍵のフィンガープリントが表示されているので、これを見て該当サーバーに間違いないと判断した場合は、「Are you sure you want to continue connecting (yes/no/[fingerprint])?」(接続を続行してもよいか?)の問いに対して、「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
SHA256:BCoN+EMu4w0ZjnVID6lXSk8XnN+qllrJPssumaO7zeY.
Please contact your system administrator.
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 rsa     SHA256:OymhOr5zFTXvB4wrXg2BZJsRRscfzXM3bIbOhik1ZOk
      2 192.168.10.2     rsa     SHA256:I3Tbsf+kH0PWeOXyMTNOTLgkz5woddKO8cPlH4RzINQ
      3 192.168.20.2     rsa     SHA256:kfzd8fgJbyPp5z4o4Mk7cJUCEgvOFvsaw/8pcYbXLPo
      4 172.16.10.3      rsa     SHA256:KNYz1X4IkC27yyrdwv9bLh4gJtjLHD4XXp6OgxupGJU
      5 192.168.10.5     rsa     SHA256:32nmQJz0Gpc2EqMIDlb88qOypLOIUYmYLlNC3GTGcZU
      6 10.100.10.100    rsa     SHA256:yFI5+dCYk2SnVCOQ03UD2o/DP3Jz+RUrlfMq0p8w/m8
    

  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 SHA256:BCoN+EMu4w0ZjnVID6lXSk8XnN+qllrJPssumaO7zeY.
    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 AAAAB3NzaC1yc2EAAAADAQABAAAAgQDH2wYiMPwJEVxtgxgsIdbYc0XZUWYTm+V
Zb8BmH7RUriJcLqYFYSxd/0PPfmy33JauqaPAmPttqyWVgOE+aakGC2CtaF7kTr5ZYI9Qfd1scVQVkekWpXK
XVye0GYDqzHrSUcyhjbUlnNiQSWjnaA1drHCoGmgZl0yZ0OlWchVyxw==
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: XXXXXXXX ↓ (実際には表示されません)
Copying..
Successful operation


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

PN: 613-002735 Rev.AD