😶
踏み台経由で快適 sftp 生活する
やりたいこと
例えば AWS EC2 な開発環境の場合、ほとんどの場合、以下のいずれかの方法で開発を進めていくと思います。
- EC2 に ssh で入って Vim で直接コーディングする
- ローカル環境で編集したファイルを SCP ツールやエディタの拡張機能で開発環境に sync する
慣れ親しんだ VSCode 使いたいなー、いちいち ssh して生の Vim めんどっちーなー ってことで、
今回は 2. を採用し、踏み台サーバを経由してローカル PC のエディタでコーディングする方法を設定します。
使用するツール
- 前述の通り、VSCode を使います
- sftp の extention を install しておきます
多段 ssh の設定
.ssh/config の編集
.ssh/config
# 踏み台サーバ
Host bastion-server
HostName xxxxxxxx
User xxxx-xxxx
IdentityFile xxxx
ForwardAgent yes
ServerAliveInterval 30
# 踏み台経由で接続したい(編集したファイルの転送先にしたい)サーバ
Host dev-server
HostName xxxxxxxx
User xxxx-xxxx
IdentityFile xxxx
ForwardAgent yes
ServerAliveInterval 30
ProxyCommand ssh -W %h:%p bastion-server
config 効いてるか確認
ログインできればおっけー。一旦抜けておく。
> ssh dev-server
> exit
VSCode で sftp する
sftp.json の編集
Command + P
→ >sftp
で sftp 設定ファイルを作成する。
2回目以降は、 Command + p
→ sftp.json
でも編集できます。
後述の通り、ポートフォワーディングでトンネル掘っちゃうので、localhost にしてます。
sftp.json
{
"name": "dev-server",
"host": "localhost",
"protocol": "sftp",
"port": 9999,
"username": "xxxx-xxxx",
"remotePath": "xxxx",
"sshConfigPath": "xxxx",
"privateKeyPath": "xxxx",
"passphrase": true,
"uploadOnSave": true
}
他にも、同期オプション等の細かい設定が可能です。
ぼくはめんどくさがりなので、とりあえず最低限必要なものだけにしておきました。
ポートフォーワードしておく
ターミナルで、9999 番にポートフォワーディングしておきます。
9999 という数字に特に意味はないです。こう、ふわっと浮かんできたんです。9999 という数字が
ssh -A {username}@dev-server -L 9999:localhost:22
これで完了です。
エディタのウインドウ下部に SFTP の文字が出たら成功。
Discussion