SCP

$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によるファイル転送を行います。

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を入力して転送を中止することはできません。

known_hostsファイルを利用したサーバ公開鍵の確認

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に登録されていないことになります。この場合には、次の理由が考えられます。

また、次のような場合においても公開鍵の確認を求めるメッセージが出力されます。


コマンド


SYSLOGメッセージ

本機能において出力される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 (認証リスト) 提案した認証方法による認証が拒否された

関連文書