【コマンドライン】暗号化データ転送[ sftp ]

【コマンドライン】暗号化データ転送[ sftp ]

コマンドラインでリモートマシンと暗号化データ転送を行うsftpコマンドについて解説します。

検証環境

sftpコマンド

sftpコマンドは“リモートマシンとSSHで暗号化されたネットワーク経路でデータ転送を行うコマンド”です。

sshコマンドと同じ認証方式を使用し、接続後は対話形式でコマンドを入力して、ファイル等の転送を行います。

基本書式

$ sftp [オプション] [ユーザー]@[リモートマシン]

オプション

主なオプションは次の通りです。

オプション 内容
-oPort="ポート番号" 接続ポート番号の指定
-i 公開鍵パス 公開鍵認証の利用

引数

ユーザー

ユーザーはログインするユーザー名です。

リモートマシン

リモートマシンはリモートマシンのIPまたはドメインです。

対話コマンド

主な対話コマンドをご紹介します。

コマンド 内容
cd パス リモートマシンのカレントディレクトリを変更
lcd パス ローカルマシンのカレントディレクトリを変更
ls パス リモートマシンのディレクトリ内容を表示
lls パス ローカルマシンのディレクトリ内容を表示
pwd リモートマシンのカレントディレクトリパスを表示
lpwd ローカルマシンのカレントディレクトリパスを表示
mkdir パス リモートマシンにディレクトリを作成
lmkdir パス ローカルマシンにディレクトリを作成
get パス リモートマシンのファイルをローカルマシンにダウンロード(-rオプションでディレクトリを再帰的にダウンロード)
put パス ローカルマシンのファイルをリモートマシンにアップロード
exit ログアウト

コマンドラインのcd、ls、mkdir、pwdと同様にオプションを使えます。

また、多数の対話コマンドがあるように思えますが、基本的にはリモートマシン操作は通常のコマンド入力、ローカルマシン操作は通常のコマンドの先頭にlを付けるという規則性があります。

サンプル

ログイン(パスワード認証)

___ih_hl_start
$ sftp hacker@127.0.0.1
___ih_hl_end

ログイン(公開鍵認証)

___ih_hl_start
$ sftp -i public.key hacker@127.0.0.1
___ih_hl_end

ログイン(ポート指定)

___ih_hl_start
$ sftp -oPort="12345" hacker@127.0.0.1
___ih_hl_end

基本操作(cd / ls / pwd / mkdir)

___ih_hl_start
sftp> ls        
___ih_hl_end
work
___ih_hl_start
sftp> cd work
sftp> pwd
___ih_hl_end
Remote working directory: /ITHACK/work
___ih_hl_start
sftp> mkdir uploads
sftp> lls
___ih_hl_end
work
___ih_hl_start
sftp> lcd work
sftp> lpwd
___ih_hl_end
Local working directory: /ITHACK/work
___ih_hl_start
sftp> lmkdir downloads
___ih_hl_end

ダウンロード

sftp> ls
content.txt
___ih_hl_start
sftp> get content.txt
___ih_hl_end
Fetching /ITHACK/work/content.txt to content.txt
content.txt                                                                                                                                                                                                                 100%   60     0.1KB/s   00:00    
sftp> lls
content.txt

ダウンロード(再帰)

sftp> ls -l
drwxr-xr-x    2 hacker guest         4096 Dec 18 23:42 test
___ih_hl_start
sftp> get -r test
___ih_hl_end
Fetching /ITHACK/work/test/ to test
Retrieving /ITHACK/work/test
testA.txt                                                                                                                                                                                                                     100%   23     0.1KB/s   00:00    
testB.txt                                                                                                                                                                                                                     100%   23     0.1KB/s   00:00    
testC.txt                                                                                                                                                                                                                     100%   25     0.5KB/s   00:00    
sftp> lls -l
drwxr-xr-x  5  hacker staff  160 12 19 04:42 test

アップロード

sftp> lls 
memo.txt
___ih_hl_start
sftp> put memo.txt
___ih_hl_end
Uploading memo.txt to /ITHACK/work/uploads/memo.txt
memo.txt                                                                                                                                                                                                                    100%   17     0.6KB/s   00:00
sftp> ls
memo.txt

ログアウト

___ih_hl_start
sftp> exit
___ih_hl_start

マニュアル

コマンドの仕様(主な処理やオプション・引数など)は環境により異なる場合がございます。

利用環境での仕様は『コマンドのマニュアルを表示する』manコマンド等で確認しましょう。