サーバ、ネットワーク機器へファイルの送受信を行う時に、SFTPコマンドを使う事ができる。
scpでも同じような処理ができるが、こちらも覚えておいて損はない。
WindowsでもLinuxでも使える。
対象のサーバに、SFTPコマンドでログイン
今回はserver:192.168.162.1にログインする。ユーザー名とパスワードはSSHと一緒。 すると、プロンプトがsftp>というように表示される。
sftp ユーザ名@192.168.162.1
実行結果
Connected to 192.168.162.243.
sftp>
この状態は、ふつうにSSHしたときと同じホームディレクトリの内容になっている。SSHしても、SFTPしても、lsしたときのファイルの 内容は変わらない。
便利なコマンド
lsコマンド
lsを実行すれば、ディレクトリの中身を確認することができる。
ls
実行結果
sftp> ls
big-ip-dns kubernetes linux-userdb netbox_core
pwdコマンド
現在の自分のいるディレクトリを表示する。
pwd
出力結果
sftp> pwd
Remote working directory: /home/user/big-ip-dns
cdコマンド
ディレクトリを移動することができる。Linuxと一緒だが、プロンプトが変化しないのでわかりづらいかも
ファイル転送
ローカルのPCにダウンロードする
get ファイル名
と指定するだけでOK。今回は bigip-login.yml
をダウンロードした。
sftp> get bigip-login.yml
Fetching /home/dito/big-ip-dns/bigip-login.yml to bigip-login.yml
/home/dito/big-ip-dns/bigip-login.yml 100% 267 17
ローカルのPCからアップロードする
これも簡単。sftpのプロンプト上で、putコマンドを実行するのみである。 とりあえず、ローカルのPCにある、 teraterm.log をアップロードする。
sftp> put teraterm.log
Uploading teraterm.log to /home/jst-dito/teraterm.log
3 teraterm.log 100% 2897 315.9KB/s 00:00
サーバ側でlsコマンドを実施してみると、新たにteraterm.logが追加されているのがわかる。
アップロード先のディレクトリは後ろの引数に指定する。ここではsv0066の、 /home/jst-dito/kubernetes 配下にアップロードしている。
sftp> put teraterm.log /home/jst-dito/kubernetes
Uploading teraterm.log to /home/jst-dito/kubernetes/teraterm.log
teraterm.log 100% 2897 313.1KB/s 00:00
以上。
参考
https://qiita.com/tatsumi_t2/items/73567ff4a1006399969b
https://setechlog.com/sftp-how-to-use/