由於Google Compute Engine(GCE),不像是Amazon EC2可以直接下載目前使用的key進行SFTP連線,根據Google官方文件設定,會需要先新增一組key到instance,隨後再將private key加入到filezilla中,便可進行SFTP連線。

先準備好GCP的Compute Engine主機

目前是以CentOS7的linux主機進行示範,也就是用以下的設定值所建立的Compute Engine 執行個體:

GCP GCE執行個體建立

使用puttygen產生key

下載puttygen以產生一組key,產生完後可以分為public key與private key,public key要加入到instance,而private key則要在電腦上留存。

詳細的步驟說明

1.開啟puttygen.exe,下方選取SSH2 RSA

puttygen.exe設定

2.點選「Generate」進行金鑰生成,請快速移動您的滑鼠游標

putty Generat

3.生成完畢後在comment的地方輸入您想要指定的使用者名稱,以此例為coder

key comment

4.複製public key的全部內容,以將其加入Compute Engine Instance

copy public key

5.複製後請先點選「Save private key」儲存在電腦上

Save private key

6.未設置密碼的private key會跳出以下視窗,此例以不設密碼為主,按yes後即可儲存檔案到電腦

private warming

7.存檔時請自行加上副檔名ppk,後續在filezilla使用時也會比較方便

Save private key as ppk

將key加入instance

1.回到GCP的管理後台(Web console),切換到Compute Engine的執行個體列表

Web console

2.左鍵點擊想要用FTP連線的主機

connect ftp sever

3.點選「編輯」,加入我們剛剛產生的key

edit vm

4.往下到SSH金鑰的地方,點選「顯示與編輯」

vm執行個體顯示與編輯調整圖例

5.點擊後,在出現的空格中直接貼上剛剛複製的public key

貼上public key

6.點擊儲存

儲存public key

安裝filezilla

1.下載安裝程式

我們先到filezilla的官網下載最新版本的filezilla,一進首頁會看到兩種版本可以下載,選擇filezilla client。

download filezilla

2.點擊後請選取windows(64-bit)

download filezilla foe windows

3.下載完執行安裝程式,點選「I Agree」同意使用者規範

I Agree privacy policy

4.安裝設定,用預設值即可

filezilla setup

5.安裝目錄選擇,用預設值即可

filezilla setup-2

6.建立開始功能表,也是預設值

filezilla setup-3

7.安裝中

安裝中

8.安裝成功,按Finish後會自動開啟filezilla

finish

新增FTP站台

1.請先開啟filezilla

開啟filezilla介面

2.點擊左上角的站台管理員

filezilla管理界面

3.會出現這樣子的畫面,再點選新增站台

至站台管理員新增站台

新增站台確認

4.可以自己取一個名字,自己看得懂就可以,以GCP為例

rename

5.右側為連線設定值,需要比對GCP上的IP

GCP IP

6.主機的格子輸入VM的外部IP,以此例來說是35.184.223.65

外部IP新增

IP

7.修改連線協定為SFTP

SFTP協定設定

8.登入型式選金鑰檔案

金鑰檔案

9.使用者名稱輸入當初建立Key的使用者名稱,此例為coder

user name

10.金鑰檔案透過瀏覽,選擇先前建立的ppk檔案

ppk

11.設定確認都對的話就按連線試試看吧

連線嘗試

12.第一次從FileZilla連線到一台主機的時候都會出現這樣的訊息:

建議使用總是信任並加入快取,萬一之後有人更換這個IP上的主機,就會跳出警告訊息提醒你主機有被更換,因為主機的指紋不一樣了。現在先按確認就可以。

未知的主機金鑰示意圖

13.若沒有問題的話在右側的遠端站台就會看到VM中的資料夾

恭喜恭喜!這樣就可以成功透過SFTP連線到GCP上的Linux主機,可以方便地進行檔案上傳下載以及修改了。

由於有建立站台,所以下次連線的時候直接到站台管理員,選擇GCP,再按連線就可以成功連線了,不需要每次連線重新設定一次。