たまに使うのですが、その都度メモ代わりに使ってるgistを見直してるので、自分が使う範囲にして記事にしてまとめておきます。

接続


下記が基本のコマンドになる。パスワード認証ができるのかどうかは知らない。ポートのオプションはデフォルト(22番)を使用している場合は必要ない(はず)

1
sftp -i <秘密鍵パス> -oPort=<ポート> <ユーザー名>@<リモートホスト>:<リモートのディレクトリ>

具体的には下記のようになる。

1
sftp -i /home/user/.ssh/secret.pem -oPort=22222 hoge@192.168.33.10:/home/hoge/tmp/

この時に、Ubuntu16.04にインストールされていたSFTPだと-iオプションが存在したがCentOS6.6にインストールされていたものだと-iオプションがなかった。この場合は-oIdentityFile=<秘密鍵パス>と記述する必要がある。

※CentOSのセットアップ・インストールは私がやったわけじゃないのでたぶんパッケージアップデートしたら-iオプション使えたりするんじゃないかと思ったりもする

オプション

-oを付与する。複数指定する場合はそれぞれに-oと記述しないといけないようだ。-oの後に半角スペースはあってもなくてもよい。

1
2
3
4
# -oの後に半角スペースがあろうがなかろうがどっちでもよい

-o IdentityFile=~/.ssh/secret.pem -o Port=22222
-oIdentityFile=~/.ssh/secret.pem -oPort=22222

接続後のコマンド


SFTPはSCPと違って対話形式なので、ディレクトリ内のファイルの確認とかカレントディレクトリの変更ができる。

ディレクトリのファイル確認

lsコマンドでリモートのファイル一覧を確認できる。

1
2
3
4
5
6
sftp -i /home/user/.ssh/secret.pem -oPort=22222 hoge@192.168.33.10:tmp/
Connected to 192.168.33.10.
Changing to: /home/hoge/tmp/

sftp> ls
doc.tar source.tar

逆にllsコマンドでローカルのファイル一覧を確認できる。

1
2
sftp> lls
files.d bar.txt

ディレクトリの変更

cdコマンドでリモートのディレクトリを変更、lcdコマンドでローカルのディレクトリの変更を行うことができる。

リモートからファイルを転送する

getコマンドでリモートからファイルを転送する。

1
2
sftp> get source.tar
get source.tar 50% 51MB 274.3KB/s 12:00 ETA

リモートにファイルを転送する

putコマンドでリモートからファイルを転送する。

1
2
sftp> put source.tar
put source.tar 50% 51MB 274.3KB/s 12:00 ETA