SFTPサーバー機能

$Date: 2023/07/06 20:30:28 $


概要

SFTP(SSH File Transfer Protocol)は、SSHによって暗号化された通信経路を利用して安全にファイルを転送するプログラムです。 ルーターのファイル転送プログラムとしてTFTPが実装されていますが、TFTPでは認証方式や暗号化方式が無いため、セキュリティ上のリスクがあります。 一方、SFTPでは認証とファイル転送の両方が暗号化されるため、遠隔から安全にルーターへのファイルの書き込みやルーターからのファイルの読み出しを行うことができます。 SFTPを用いることで以下の操作を行うことができます。

SFTPはSSHのサブシステムとして動作し、SSHの認証方式、暗号アルゴリズム、送信データ圧縮を使用します。 SSHの認証方式、暗号アルゴリズム、送信データ圧縮については、SSHサーバー機能を参照してください。


注意事項


対応機種とファームウェアリビジョン

ヤマハルーターでは以下の機種およびファームウェアで、SFTPサーバー機能をサポートしています。

機種ファームウェアSFTPサーバー機能(パスワード認証)SFTPサーバー機能(公開鍵認証)
YSL-V810 すべてのリビジョン ×
vRX VMware ESXi版
vRX Amazon EC2版
RTX3510
RTX1300
RTX1220
RTX830 Rev.15.02.01以降 ×
Rev.15.02.14以降
NVR510 Rev.15.01.02以降 ×
Rev.15.01.16以降
NVR700W Rev.15.00.02以降 ×
Rev.15.00.17以降
RTX1210 Rev.14.01.05以降 ×
Rev.14.01.35以降
RTX5000 Rev.14.00.29以前 ×
Rev.14.00.32以降
RTX3500 Rev.14.00.29以前 ×
Rev.14.00.32以降
FWX120 すべてのリビジョン ×
RTX810 ×
NVR500 Rev.11.00.13以降 ×
RTX1200 Rev.10.01.22以降 ×
SRT100 Rev.10.00.60以降 ×

詳細

  1. SFTPのアクセス制限
  2. SFTPによるヤマハルーターへのアクセスには、以下の制限があります。


  3. SFTPで接続するユーザーの管理
  4. user attribute コマンドを用いることで、login user コマンドで設定した各ユーザーごとにSFTP接続の許可および禁止やSFTP接続できるパスワードを制限することができます。 また、disconnect user コマンドを用いることでSFTPサーバーに接続中のユーザーを強制的に切断させることができます。 以下に user attribute コマンドのSFTPサーバーに関する仕様拡張について説明します。 user attribute コマンドの詳細については、user attributeコマンドを参照してください。 SFTP接続中のユーザーの強制切断については、disconnect userコマンドを参照してください。

    入力形式:
    user attribute [user] attribute=value [attribute=value...]
    no user attribute [user]

    attribute value 説明
    administrator
    (RTX3510、RTX1300)
    2 administratorコマンドのパスワード入力無しで管理ユーザーに昇格することができる。またGUIの管理者ページへ接続することができる。
    SFTPサーバーにおける本属性の役割は以下の通りです。

    ●パスワード認証を使用する場合
    ・login userコマンドで設定したパスワードでSFTP接続した場合
    一般ユーザーの権限でログインします。ファイルリストの閲覧が可能です。ファイルの読み出しや書き込み、リビジョンアップはできません。 使用できるSFTPの対話コマンドは、別表を参照してください。

    ・管理者パスワードでSFTP接続した場合
    管理者の権限でログインします。SFTPの対話コマンド全てを実行することが可能です。 使用できるSFTPの対話コマンドは、別表を参照してください。

    ●公開鍵認証を使用する場合
    ・管理者の権限でログインします。SFTPの対話コマンド全てを実行することが可能です。使用できるSFTPの対話コマンドは、別表を参照してください。

    1 administratorコマンドにより管理ユーザーに昇格することができる。またGUIの管理者ページへ接続することができない。
    SFTPサーバーにおける本属性の役割は、上記 administrator = 2 と同じ。
    off administratorコマンドにより管理ユーザーに昇格することができない。またGUIの管理者ページへ接続することができない。
    SFTPサーバーにおける本属性の役割は以下の通りです。

    ●パスワード認証を使用する場合
    ・login userコマンドで設定したパスワードでSFTP接続した場合
    一般ユーザーの権限でログインします。ファイルリストの閲覧が可能です。ファイルの読み出しや書き込み、リビジョンアップはできません。 使用できるSFTPの対話コマンドは、別表を参照してください。

    ・管理者パスワードでSFTP接続した場合
    ログインすることができません。

    ●公開鍵認証を使用する場合
    ・一般ユーザーの権限でログインします。ファイルリストの閲覧が可能です。ファイルの読み出しや書き込み、リビジョンアップはできません。 使用できるSFTPの対話コマンドは、別表を参照してください。
    administrator
    (上記以外)
    on administratorコマンドにより管理ユーザーに昇格することができる。またGUIの管理者ページへ接続することができる。
    SFTPサーバーにおける本属性の役割は、上記 administrator = 2 と同じ。
    off administratorコマンドにより管理ユーザーに昇格することができない。またGUIの管理者ページへ接続することができない。
    SFTPサーバーにおける本属性の役割は、上記 administrator = off と同じ。
    connection off すべての接続を禁止する。
    all すべての接続を許可する。
    serial シリアルコンソールからの接続を許可する。
    telnet TELNETによる接続を許可する。
    ssh SSHによる接続を許可する。
    sftp SFTPによる接続を許可する。
    remote リモートセットアップによる接続を許可する。
    http GUI設定画面への接続を許可する。
    host IPアドレス 指定したホストからの接続を許可します。
    any すべてのホストからの接続を許可します。
    multi-session on 同一ユーザー名によるTELNETまたは、SSHでの複数接続を許可する。
    ※SFTPは同時に複数のユーザーがログインすることはできません。
    off 同一ユーザー名によるTELNETまたは、SSHでの複数接続を禁止する。
    login-timer 120..21474836, clear ログインタイマーを設定する。login timerコマンドで設定されたタイマー値よりもこのコマンドで設定したタイマー値が優先されます。SFTPでは、SSH同様に login-timer = clear と設定されていてもタイマー値は300秒として扱います。

    [初期値]


  5. SFTPサーバーを利用するために必要な設定
  6. SFTPサーバーを利用するために、あらかじめ以下の設定を行う必要があります。

    login user ユーザー名 パスワード ... (1)
    user attribute ユーザー名 ... (2)
    sshd host IPアドレス ... (3)
    sshd host key generate ... (4)
    sshd service on ... (5)
    sftpd host IPアドレス ... (6)
    (1) ログインユーザーの登録

    ログインユーザー名とパスワードを設定します。

    (2) ユーザーの属性を設定

    ログインユーザーにSFTPによる接続を許可します。
    user attribute コマンドは初期状態でSFTP接続を行うことができます。

    必要に応じて、管理ユーザーに昇格する権限の設定を変更します。
    user attribute コマンドは初期状態で管理ユーザーに昇格を許可しています。

    (3) SSHで接続を許可するホストを設定

    SSHで接続するホストのIPアドレスを設定します。
    IPアドレスには、IPv4アドレスまたはIPv6アドレスが設定できます。

    (4) SSHサーバーのホスト鍵の生成

    DSAまたはRSAの公開鍵および、秘密鍵のペアを生成します。
    鍵の生成には、数十秒ほど時間がかかります。

    (5) SSHサーバー機能を有効にする

    SFTPサーバー機能は、SSHの認証および暗号化を使用しますので、SSHサーバー機能を有効にする必要があります。

    (6) SFTPで接続を許可するホストを設定

    SFTPで接続を許可するホストのIPアドレスを設定します。
    sshd host コマンドでSSHサーバーへのアクセスが許可されたホストの中で、SFTPで接続するホストを制限することができます。
    IPアドレスには、IPv4アドレスまたはIPv6アドレスが設定できます。

    ※公開鍵認証を使用するためには、上記の設定に追加してauthorized_keysファイルにユーザーの公開鍵を登録する設定が必要です。
    詳細は、こちらをご確認ください。

  7. ディレクトリ構造
  8. SFTPサーバーでは以下のようなディレクトリ構造が構築されます。

    	SFTPサーバーのルートディレクトリ
    	  |
    	  +--system/	ルーターの設定ファイルとファームウェアファイルとtechinfoの格納ディレクトリ
    	  |
    	  +--sd1/	microSDカードのルートディレクトリ(microSDカード挿入時のみ表示)
    	  |
    	  +--usb1/	USBメモリのルートディレクトリ(USBメモリ挿入時のみ表示)
    	  |
    	  +--RTFS領域のルートディレクトリにあるファイルやディレクトリ
    

    絶対パスと相対パス

    WindowsのコマンドプロンプトやUNIX系OSのシェルでは、一般的にファイルやディレクトリの指定方法としてルートディレクトリ '/' から記述する絶対パスと、 カレントディレクトリを基点として目的のファイル、ディレクトリがどこにあるのかを示す相対パスの2種類があります。 SFTPサーバー機能では、絶対パスと相対パスの両方を用いることが可能です。UNIX系のSFTPの仕様に従い、ホームディレクトリを示す ~ (チルダ)を用いることはできません。

  9. SFTPサーバー 動作確認済のSFTPクライアント
  10. 2019年7月時点の動作確認結果です。動作を保証するものではありません。使い方は、SFTPクライアントの説明書などをご確認ください。

    【WinSCP使用時の推奨設定項目と注意点】

    ※WinSCPバージョン4.2.5での設定変更方法を記載します。バージョンによって設定変更方法が異なる場合があります。


  11. SFTP の使用例
  12. SFTPによる設定ファイルの読み書きと、ファームウェアのリビジョンアップの手順を紹介します。

    以下の手順において、いずれの場合も、ヤマハルーターのIPアドレスを 192.168.0.1、ユーザー名を"yamaha"、管理者パスワードでログインするとします。パスワード認証を使用した例です。

    【OpenSSH 5.3での手順】

    1. 設定ファイルの読み出し
    2. 設定ファイル"config"を"OLDconfig.txt"に読み出すものとします。

      > sftp yamaha@192.168.0.1
      Connecting to 192.168.0.1...
      Password:
      sftp> get system/config OLDconfig.txt
      Fetching /system/config to OLDconfig.txt
      /config						100% 570     0.6KB/s   00:00
      sftp>
      
    3. 設定ファイルの書き込み
    4. ホストにあるファイル"NEWconfig.txt"を設定ファイル"config1"に書き込むものとします。

      > sftp yamaha@192.168.0.1
      Connecting to 192.168.0.1...
      Password:
      sftp> put NEWconfig.txt system/config1
      Uploading NEWconfig.txt to /system/config1
      NEWconfig.txt					100% 4260    4.2KB/s   00:00
      sftp>
      
    5. ファームウェアのリビジョンアップ
    6. ホストにあるファイル"rtx1200.bin"をファームウェア"exec0"に書き込むものとします。
      リビジョンアップが正常に終了すると、自動的にルーターが再起動します。

      > sftp yamaha@192.168.0.1
      Connecting to 192.168.0.1...
      Password:
      sftp> put rtx1200.bin system/exec0
      Uploading rtx1200.bin to /system/exec0
      rtx1200.bin					100% 3488KB  768.4KB/s   00:05
      sftp> Received disconnect from 192.168.0.1: 2: Disconnect for router restart
      

      ファームウェアの転送が終了し、ファームウェアの書き込みが正常に終了するとセッションが自動切断されます。
      ファームウェアの転送からセッションの自動切断まで数十秒間はプロンプト(sftp>)が戻りません。

    7. USBメモリへのファイルの書き込み
    8. ファイル"config.txt"をUSBメモリのルートディレクトリに"memory.txt"という名前で書き込むものとします。

      > sftp yamaha@192.168.0.1
      Connecting to 192.168.0.1...
      Password:
      sftp> put config.txt usb1/memory.txt
      Uploading config.txt to /usb1/momory.txt
      config.txt					100% 570     0.6KB/s   00:00
      sftp>
      
  13. SFTPサーバー機能で利用できるSFTPの対話コマンド
  14. SFTPでパスワード認証を使用する場合は、login user コマンドで設定したパスワード、もしくは管理者パスワードでログインすることができます。
    SFTP接続する際に使用したパスワードによってユーザーが使用できるSFTPの対話コマンドが異なります。

    SFTPで公開鍵認証を使用する場合は、authorized_keysファイルにユーザーの公開鍵を登録することによりログインすることができます。
    user attribute コマンドの administrator 属性によって使用できるSFTPの対話コマンドが異なります。

    ※1:
    ルーターには、UNIXのようなファイルの属性がないため、ls -l コマンドや ls -al コマンドで表示されるファイルの属性のうち、パーミッションやユーザーID、グループIDの値は意味を持ちません。 SFTPクライアントによっては、ファイル名が"."で始まるような隠しファイルが ls コマンドで表示されないことがあります。ls -alコマンドを使うことで表示させることができます。

コマンド


SYSLOGメッセージ一覧

本機能において出力されるSYSLOGメッセージを以下に示します。

レベル 出力メッセージ 意味
INFO Login succeed: IPアドレス ユーザー名 as administrator 管理ユーザーとしてSFTP接続のログインに成功
Login succeed: IPアドレス ユーザー名 as login user 一般ユーザーとしてSFTP接続のログインに成功
Permission denied : IPアドレス sftpd hostコマンドの設定によりアクセスが制限された
Logout: ユーザー名 SFTP接続からログアウト
Get ファイル名 succeed by ユーザー名 設定ファイルの読み出しに成功
Put ファイル名 succeed by ユーザー名 設定ファイルまたはファームウェアの書き込みに成功
Get ファイル名 failed by ユーザー名 設定ファイルの読み出しに失敗
Put ファイル名 failed by ユーザー名 設定ファイルまたはファームウェアの書き込みに失敗

関連文書