GoogleCloudPlatformのGoogleComputeEngineという、いわゆるVPSのようなVMインスタンスがある。
これでFTPサーバを立ててファイルを投げたいなーと思ってvsftpをインストールして設定いじって、GoogleCloudPlatformのインスタンスとしてのファイアウォールに穴を開け、VMインスタンスにインストールされているCentOSのfirewalldに黙っていただいた。しかし繋がらない。OOPS!じゃねえよ、と何度言ったことか。
調べてみたところ、どうもこのVMインスタンスにはFTP接続はできないらしい。
FTPがつながらない理屈は分からないが下記の記事を信じることにした。
作業報告ログ: [GCE] Google Compute EngineのVMインスタンスとローカル間でファイルのやりとりを行う
なにせ、FTPのセッション自体は確立できてもLISTコマンド等を受けてつけてくれないのだ。
GoogleComputeEngine FTPとかでググるとgcloudコマンドを使って~という的外れなのがたくさん出てくる。
代替え手段としては正当なんだとは思ったので、素直にやってみた。
しかしwindows7上でコマンドプロンプトからgcloudコマンドを使えるようにしても、下記コマンドが通らない。
gcloud component update gcutil
ちなみにWindows7上でgcloudコマンドを使うには下記リンクにあるインストーラを使ってインストールする。
その後はgcloudの認証等が必要になる。
gcloud auth login
脱線してしまっているし、詳細は下記とか適当に見てください。
一部情報(特にインストールのところ)は古くなっているようだけど、概ね参考になると思います。
で、先のgcutilのインストールだけど、Windows上では使えないとかでインストールできないんじゃないかという気がしてきた。
どちらにせよ私がやりたいことは実現できなさそう、できたとして非常にめんどくさい手順を踏む必要がる。
しかしそれでは困る、というわけで試行錯誤してて気づいたが、このインスタンスSSHつながるジャン。
ということはSCPかSFTPはつながるんじゃね?と思って調べてみたら普通にあった。
https://cloud.google.com/compute/docs/tutorials/transfer-files#sftp-compute-engine
なんてこったい。
早い話が、gcloudSDKをインストールして
gcloud compute ssh INSTANCE_NAME
こうすればSSHで接続してくれて、かつ共有鍵も作ってくれるのでその鍵をFilezillaなりなんなりに入れてあげれば使えるようになる。
ちなみに、Windows7なら下記フォルダに鍵が置いてある。
C:\Users\USERNAME\.ssh
FileZillaの設定画面を開いて、SFTPの鍵の追加で上記フォルダ内の「google_compute_engine」を登録、先のコマンドでSSH接続した際のパスフレーズを入力してやればつながります。
FileZillaの接続先IPはGoogleCloudPlatformのMyconsoleから確認、ユーザ情報は先のSSHで繋いだ時のもので良いです。
雑ですがこんな感じだった。
ちなみにどうでもいいですがセキュアなFTPにはSFTPとFTPSがあって、前者はSSHのプロトコルを使って通信し、後者はSSLで暗号化して通信するはず。