これまであるサイトのバックアップを VPS サーバで取っていたんだけど、容量が大きくなってきたので、手元のハードディスクに取ることにしたいなと。
だが、本番サーバは別途サーバ管理のところが運用。SSH 接続は IP アドレスでアクセス制限がかけらていて、その VPS サーバからしかアクセスできないと。
そこでその VPS サーバを経由して sftp で手元にバックアップを取ることにした。そのときのメモ
1. まず ssh で多段接続する
まず、ssh で「ローカルPC」→「VPSサーバ」→「本番サーバ」という形で接続できれば、sftp でも接続できるというわけで、まず手元の PC の WSL で、 VPS サーバを経由して ssh できるようにする
そこでまず、~/.ssh/config の設定を次のようにする。以下 VPS サーバの IP アドレスを xxx.xxx.xx.xx、SSH のポートを 21221(ユーザ名は ginchan)。本番サーバの IP アドレスを yyy.yyy.yy.yy、SSH のポートを 21 とする(ユーザ名は hogehoge)
Host vps-server
HostName xxx.xxx.xx.xx
User ginchan
Port 21221
IdentityFile /home/ginchan/.ssh/id_rsa
Host honban-server
HostName yyy.yyy.yy.yy
User hogehoge
Port 21
IdentityFile /home/ginchan/.ssh/id_rsa
ProxyCommand ssh -W %h:%p vps-server
VPS サーバのほうはもちろん、これまで通り。今回あらたに本番サーバを追加。そして、このときのポイントはもちろん ProxyCommand を設定してやること。
こうすると、
$ ssh honban-server
で、手元の PC から IP アドレスで制限がかかっている本番サーバにアクセスできる。
2. lftp で sftp 接続する
ssh で接続できたので、sftp 接続も当然できると。ただ、lftp でどう接続すればいいのか、ちょっと困った。set sftp:connect-program を設定してやればいいのかなと思ったが、以下であっさり接続できた
$ lftp -u hogehoge sftp://honban-server
パスワードを聞かれるので、秘密鍵のパスフレーズを入力してやれば、見事 lftp で sftp 接続できた。これを普通に lftp でブックマークしておけばよいと。めでたしめでたし。つーかもっと早くやっておけばよかった…