$Date: 2023/07/06 20:30:27 $
SCP (Secure CoPy) は、SSHによってリモートホストとの間に張られたセッションを通して安全にファイルの転送を行うプログラムです。 SCPを使用して、ルーターへファイルの書き込みやルーターからファイルを読み出すことができます。
SFTPサーバ機能がSSHサーバ機能を利用してSFTPクライアントとの間でファイル転送を行うのに対して、SCPではSSHクライアントを利用してSSHサーバへ接続し、ファイルの転送を行います。
本機能の主な仕様および制限は次の通りです。
ヤマハルーターでは以下の機種およびファームウェアで、SCP機能をサポートしています。
機種 | ファームウェア |
---|---|
vRX VMware ESXi版 | すべてのリビジョン |
vRX Amazon EC2版 | |
RTX3510 | |
RTX1300 | |
RTX1220 | |
RTX830 | |
NVR510 | |
NVR700W | |
RTX1210 | |
RTX5000 | |
RTX3500 | |
FWX120 | Rev.11.03.04以降 |
RTX810 | Rev.11.01.12以降 |
NVR500 | Rev.11.00.23以降 |
RTX1200 | Rev.10.01.42以降 |
ルーターのコンソールから scp コマンドを実行し、SCPによるファイル転送を行います。
scp <送信元ファイル> <送信先ファイル> <リモートホストのポート番号>
リモートホストのファイルを指定する場合、ファイル名の前に、「<ユーザ名>@<ホスト名>:」を付加します。
ルーター上のファイルとリモートホストのファイルとの転送のみをサポートしていますので、どちらか片方のファイルは、ルーター上のファイルを絶対パスで指定し、もう片方のファイルにはリモートホストのファイルを指定します。
<リモートホストのポート番号>のデフォルト値は 22です。22番ポート以外を使用している場合には、接続するリモートホストのポート番号に合わせて適宜指定してください。
22番ポートに接続する場合には<リモートホストのポート番号>を省略することができます。
scpコマンド
scp <送信元ファイル> <ユーザ名>@<ホスト名>:<送信先ファイル> <リモートホストのポート番号>
ルーター上にある次のファイルを送信することができます。
種類 | ファイル名 |
---|---|
ファームウェアファイル | exec, execN (N: 0〜1) |
設定ファイル | config, configN (N: 0〜4.2) |
ルーターの技術情報ファイル | techinfo |
RTFS | RTFSにあるファイルを絶対パスで指定する |
外部メモリ | 外部メモリ上にあるファイルを絶対パスで指定する パスの先頭には、デバイスによって「usb1:」や「sd1:」等のプレフィックスを付加する |
※ | 外部メモリ内のファームウェアで起動しているとき、起動中のファームウェアファイル (exec) を送信する場合は外部メモリ内のファイルが送信されます。 |
※ | ルータの技術情報(techinfo)を送信する場合、ルータ内部の情報を収集してから送信を行うため、送信開始までに時間がかかることがあります。 |
scpコマンド
scp <ユーザ名>@<ホスト名>:<送信元ファイル> <送信先ファイル> <リモートホストのポート番号>
ルーター上にある次のファイルへ書き込むことができます。
種類 | ファイル名 |
---|---|
ファームウェアファイル | exec, execN (N: 0〜1) |
設定ファイル | config, configN (N: 0,1,2,3,4) |
RTFS | RTFSにあるファイルを絶対パスで指定する |
外部メモリ | 外部メモリ上にあるファイルを絶対パスで指定する パスの先頭には、デバイスによって「usb1:」や「sd1:」等のプレフィックスを付加する |
※ | 外部メモリ内のファームウェアで起動しているとき、起動中のファームウェアファイル (exec) に対して書き込みを行った場合は外部メモリ内のファイルに書き込まれます。 |
※ | 起動中のファームウェアファイル (exec) に対して書き込みを行っても自動的に再起動しません。 |
※ | 設定の履歴ファイルを送信先ファイルに指定することはできません。 |
※ | リモートホストからルータにファイルを送信する場合、ルータの技術情報ファイル(techinfo)を送信先に指定することはできません。 |
ファイルの送信、または受信を中止したい場合、コンソールから Ctrl+C を入力(Ctrlキーと'C'キーを同時に入力) します。
RTFSおよび外部メモリのファイルに書き込んでいる最中にファイル転送を中止した場合、それまでに受信したデータがファイルに保存されます。
ただし、受信したファームウェアや設定ファイルをFLROMに書き込んでいる最中や、ユーザ認証および公開鍵の確認など入力を求められているときには、Ctrl+Cを入力して転送を中止することはできません。
SCPが接続に利用する SSH では、サーバの公開鍵情報をknown_hostsと呼ばれるファイルに保存し、接続する毎にサーバから受信した公開鍵とknown_hostsに記録されている公開鍵を照合し、信頼するサーバか否かを確認しています。
known_hostsに記録されていないサーバに初めて接続する場合、コンソールにサーバの公開鍵情報を出力し、サーバへの接続処理を継続するか否かを問うメッセージが出力されます。
# scp /sample.txt test@192.168.0.1:sample.txt The authenticity of host '192.168.0.1 (192.168.0.1)' can't be established. RSA key fingerprint is aa:bb:cc:dd:ee:ff:gg:hh:ii:jj:kk:ll:mm:nn:oo:pp. Are you sure you want to continue connecting (yes/no)?
'yes' を入力すると公開鍵をknown_hostsに登録し、サーバへの接続を行います。 'no' を入力すると、サーバとの接続を終了します。
2回目以降の接続でサーバの公開鍵が確認できた場合には、上記メッセージは出力されず、クライアントのユーザ認証が開始されます。
もし、初めてサーバに接続する場合と同様のメッセージが表示された場合には、known_hostsに登録されていないことになります。この場合には、次の理由が考えられます。
また、次のような場合においても公開鍵の確認を求めるメッセージが出力されます。
# scp /sample.txt test@192.168.0.1:sample.txt WARNING: DSA key found for host 192.168.0.1 in /ssh/known_hosts:1 DSA key fingerprint aa:bb:cc:dd:ee:ff:gg:hh:ii:jj:kk:ll:mm:nn:oo:pp. The authenticity of host '192.168.0.1 (192.168.0.1)' can't be established but keys of different type are already known for this host. RSA key fingerprint is 00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff. Are you sure you want to continue connecting (yes/no)?
# scp /sample.txt test@aaa.example.com:sample.txt @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 DSA host key has just been changed. The fingerprint for the DSA key sent by the remote host is aa:bb:cc:dd:ee:ff:gg:hh:ii:jj:kk:ll:mm:nn:oo:pp. Please contact your system administrator.
SCPを実行する。
FILE1またはFILE2のどちらか一方はリモートホスト上のファイルを指定し、もう一方にはルータのファイルシステムにあるファイルを指定する。
FILE1、FILE2の両方にリモートホストのファイルを指定することはできない。
同様にFILE1、FILE2の両方にルータのファイルシステムにあるファイルを指定することはできない。
RTFSおよび外部メモリにあるファイルを指定する場合、USERおよびHOSTを省略しFILEのみを絶対パスで指定する。
ルータの設定ファイル (config、config0〜config4) やファームウェア (exec、exec0、exec1) を指定する場合には、FILEに"config"や"exec0"のようにファイル名のみを指定する。
HOSTにIPv6アドレスを指定する場合には、"["、"]"でIPアドレスを囲む。
scp user@192.168.1.1:rtx1200.bin exec0
scp usb1:/log.txt user@[2001:1::1]:log.txt
設定値 | 説明 |
---|---|
aes128-ctr | AES128-CTR |
aes192-ctr | AES192-CTR |
aes256-ctr | AES256-CTR |
aes128-cbc | AES128-CBC |
aes192-cbc | AES192-CBC |
aes256-cbc | AES256-CBC |
3des-cbc | 3DES-CBC |
blowfish-cbc | Blowfish-CBC |
cast128-cbc | CAST-128-CBC |
arcfour | Arcfour |
SSHクライアントで利用可能な暗号アルゴリズムを設定する。
ALGORITHMで指定した暗号アルゴリズムのリストをSSH接続時にサーバーへ提案する。
ALGORITHMで指定した暗号アルゴリズムをサーバーがサポートしていない場合には、そのサーバーとSSHによる接続ができない。
blowfish-cbc, cast128-cbc, arcfour のパラメータは次のリビジョン以降で非対応。
機種 | ファームウェア |
---|---|
RTX1210 | Rev.14.01.34 以降 |
NVR700W | Rev.15.00.16 以降 |
NVR510 | Rev.15.01.15 以降 |
RTX830 | Rev.15.02.10 以降 |
RTX1220 | すべてのリビジョン |
RTX1300 | |
RTX3510 | |
vRX Amazon EC2版 | |
vRX VMware ESXi版 |
SSHサーバの公開鍵情報を保存するファイルを指定する。
本機能において出力されるSYSLOGメッセージの一覧を以下に示します。なお、実際に出力される各メッセージの先頭には"[SCP] "または"[SSH] "というプレフィックスが付与されます。
これら以外にも、サーバから受信したエラーメッセージをSYSLOGとして出力しています。
レベル | 出力メッセージ | 内容 |
---|---|---|
INFO | sending ファイル名 succeeded, to ホスト名 | ファイルの送信に成功した |
receiving ファイル名 succeeded, from ホスト名 | ファイルの受信に成功した | |
sending ファイル名 canceled, to ホスト名 | ファイルの送信を中止した | |
sending ファイル名 failed, to ホスト名 | ファイルの送信に失敗した | |
receiving ファイル名 canceled, to ホスト名 | ファイルの受信を中止した | |
receiving ファイル名 failed, to ホスト名 | ファイルの受信に失敗した | |
DEBUG | login succeeded ホスト名 | SSHサーバへのログインに成功した |
logout from ホスト名 | SSHサーバからログアウトした | |
connection failed ホスト名 | SSHサーバへの接続に失敗した | |
login failed ホスト名 | SSHサーバへのログインに失敗した | |
Can't create socket | ソケットが生成できなかった | |
Can't connect to server | SSHサーバへ接続できなかった | |
Can't resolve name | サーバのホスト名の名前解決ができなかった | |
illegal address family | 不正なIPアドレスファミリーが指定された | |
read error | サーバからのパケット受信でエラーが発生した | |
write error | サーバへのパケット送信でエラーが発生した | |
Connection closed by remote host | サーバから切断された | |
Bad remote protocol version identification: バージョン | サーバのプロトコルが不正なバージョンである | |
Remote machine has too old SSH software version. | サーバのSSHプログラムのバージョンが古すぎる | |
Protocol major versions differ | SSHプロトコルのバージョンが一致しない | |
Add correct host key in known_hostsファイル to get rid of this message. | known_hostsファイルに正しいホスト鍵が追加されている | |
Offending key in known_hostsファイル:行数 | 公開鍵は known_hostファイル の 行数 にある | |
暗号方式 host key for ホスト名 has changed and you have requested strict checking. | サーバのホスト鍵が変更されており、厳重な確認を要求された | |
Host key verification failed. | サーバのホスト鍵の確認に失敗した | |
Server denied authentication request: | 認証要求がサーバに拒否された | |
internal error: cannot send userauth none request | 内部エラーにより、ユーザ認証要求 'none' を送信できなかった | |
Permission denied (認証リスト) | 提案した認証方法による認証が拒否された |