Linuxコマンド【 sftp 】安全なファイル転送を行う

当ページのリンクには広告が含まれています。

スポンサーリンク

sftpコマンドは、安全なファイル転送を行うコマンドです。

sftpコマンド

書式

sftp [オプション] ホスト名 [コマンド]

sftpコマンドは、ftpコマンドのように対話的なファイル転送をするプログラムで、SSHで暗号化された通信経路でファイル転送を行います。「sshコマンド」と同じ認証を利用するので、鍵認証も利用でき、安全にファイル転送が行えます。鍵の生成は「ssh-keygenコマンド」を参照してください。
cf. » scpコマンド

オプション

-b バッチファイルバッチファイルに記述したコマンドでファイルを転送します。
-i 秘密鍵ファイル秘密鍵ファイル(identityファイル)を指定します。
-l 制限ファイル転送に使用する帯域を制限します。Kbit/sで指定します。
-ossh形式(ssh_config)のオプションを指定します。例えば、ポート番号は「sftp -oPort=24」で指定できます。
-1SSHのプロトコルバージョン1を使用します。
-2SSHのプロトコルバージョン2を使用します。
-4IPv4を使用します。
-6IPv6を使用します。

対話的にファイルを転送

クライアント(ユーザー:karuma)からVPS(リモートマシン、IPアドレス:aaa.bbb.ccc.ddd)にファイル(tmp1.txt)を転送(put)します。

$ sftp karuma@aaa.bbb.ccc.ddd ← aaa.bbb.ccc.dddにkarumaでログインします
karuma@aaa.bbb.ccc.ddd's password: ← sshのパスワードを入力します
Connected to aaa.bbb.ccc.ddd.
sftp> put tmp1.txt ← クライアントからリモートマシンへtmp1.txtを転送します
Uploading tmp1.txt to /home/karuma/tmp1.txt
tmp1.txt                                                            100%   26     0.0KB/s   00:00    
sftp> quit ← sftpコマンドを終了します

VPS(リモートマシン:sftpserver)からクライアント(ユーザー:karuma)にファイル(tmp2.txt)を取得(get)します。

$ sftp karuma@sftpserver ← sftpserverにkarumaでログインします
karuma@sftpserver's password: ← sshのパスワードを入力します
Connected to sftpserver.
sftp> get tmp2.txt ← リモートマシンからtmp2.txtを取得します
Fetching /home/karuma/tmp2.txt to tmp2.txt
/home/karuma/tmp2.txt                                               100%   25     0.0KB/s   00:00    
sftp> quit ← sftpコマンドを終了します

sftpの対話的なコマンド一覧

byesftpの接続を閉じます。
cd パス名指定したパス名に移動します。
exitsftpの接続を閉じます。
getリモートマシンからローカルマシンへファイルを取得します。
helpヘルプを表示します。
lcd パス名指定したパス名(ローカル)に移動します。
lmkdir パス名指定したパス名のディレクトリをローカルに作成します。
lpwdローカル側の現在作業中のディレクトリを表示します。
mkdir パス名指定したパス名のディレクトリをリモートマシンに作成します。
putローカルマシンからリモートマシンへファイルを転送します。
pwdリモートマシン側の現在作業中のディレクトリを表示します。
quitsftpの接続を閉じます。

バッチファイルでファイルを転送

バッチファイルでクライアントからVPS(リモートマシン、IPアドレス:aaa.bbb.ccc.ddd)へファイル転送します。

$ cat sftp.bat
put tmp3.txt
quit
$ sftp -b sftp.bat karuma@aaa.bbb.ccc.ddd
karuma@aaa.bbb.ccc.ddd's password: 
sftp> put tmp3.txt
Uploading tmp3.txt to /home/karuma/tmp3.txt
sftp> quit

以下のように、うまくいかない場合。

$ sftp -b sftp.bat karuma@aaa.bbb.ccc.ddd
Permission denied (publickey,password).
Connection closed

-o オプションで明示的に「"batchmode no"」を指定しましょう。

$ sftp -o "batchmode no" -b sftp.bat karuma@aaa.bbb.ccc.ddd
karuma@aaa.bbb.ccc.ddd's password: 
sftp> put tmp3.txt
Uploading tmp3.txt to /home/karuma/tmp3.txt
sftp> quit

バッチファイルをcronなどで自動化したい場合は、パスフレーズなしの公開鍵認証を利用しましょう。鍵の生成はssh-keygenコマンドを参照してください。

関連コマンド

scp, ssh

ネットワーク の人気記事

  1. Linuxコマンド【 ssh 】リモートマシンにSSHでログインする
  2. Linuxコマンド【 sftp 】安全なファイル転送を行う
  3. Linuxコマンド【 scp 】リモートマシンにファイルコピーする
  4. Linuxコマンド【 traceroute 】ホストまでの経路を表示する
  5. Linuxコマンド【 wget 】ファイルをダウンロードする
  6. Linuxコマンド【 ntpdate 】日付と時刻をNTPサーバーと同期する
  7. Linuxコマンド【 ping 】ホストとの接続を確認する
  8. Linuxコマンド【 netstat 】ネットワークの接続状況を表示する
  9. Linuxコマンド【 ssh-keygen 】認証用の鍵を生成する
  10. Linuxコマンド【 nslookup 】対話的にDNSサーバーへ問い合わせる

関連記事(一部広告含む)