やりたいこと
- 【このページ】無料枠でGCEを起動したい
- 【このページ】SSHの22番ポートを3333番ポートに変更したい
- 【こちらから】GCE(仮想マシン) 内の Python(Ubuntu) でSeleniumを使ったスクレイピング
- 【こちらから】取得したファイルをGoogle Driveにアップロード
- 【こちらから】スクレイピングを cron で定期的に実行する
- 【こちらから】指定の時間にインスタンスをオン/オフする
全体図
GCPを始める前に必要なもの
-
携帯電話の番号
Googleからのショートメッセージを受け取るため -
Googleアカウント
二段階認証を設定してください、乗っ取られたら元も子もないので。 -
クレジットカード
Vプリカなどのプリペイドカードは無料トライアル登録不可
二段階認証の設定と無料トライアル登録までの手順は割愛
① GCEの有効化
- 画面左上、Google Cloud ロゴの左にある ナビゲーション メニュー から すべてのプロダクトを表示
- コンピューティングの Compute Engine を選択
- Compute Engine APIを 有効にする
② インスタンスの作成
③ SSHの設定
- 画面右上、通知マークの左にある Cloud Shellをアクティブにする
- ウィンドウの下部にコンソールが表示されるので、コンソール内に以下の3行を入力
※ ↓ パスフレーズを聞かれますが、設定せずに進めましたユーザー名@cloudshell:~ (プロジェクト名)$ssh-keygen -t rsa -f ~/.ssh/my-ssh-key -C hogehoge chmod 400 ~/.ssh/my-ssh-key cat ~/.ssh/my-ssh-key.pub
- コンソール内に出力された
ssh-rsa ~~~ hogehoge
をコピーする - 作成時につけた インスタンス名 をクリック
- 編集 をクリック
- 表示されたページの真ん中、やや下にある
セキュリティとアクセス > SSH 認証鍵 > +項目を追加 - コピーした
ssh-rsa ~~~ hogehoge
を貼り付ける
- ページの下部にある 保存
④ 接続できるか確認
- コンソールに以下の1行を入力
※[外部 IP アドレス] ③ SSHの設定 の続きならページの真ん中から、サイドメニューの VM インスタンス からも確認できますユーザー名@cloudshell:~ (プロジェクト名)$ssh -i ~/.ssh/my-ssh-key hogehoge@[外部 IP アドレス]
- 初回だけ接続時に
Are you sure you want to continue connecting (yes/no/[fingerprint])?
と聞かれるのでyes
-
hogehoge@vm-hoge:~$
と表示されたら接続完了 - このままだと、デフォルトのポート番号22のままなので、ポート番号3333へ変更します
⑤ ファイアウォールの設定
⑤-1 接続先のsshd設定を修正
- コンソールに以下の4行を入力
hogehoge@vm-hoge:~$
sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org sudo sed -i -e "s/#Port 22/Port 3333/g" /etc/ssh/sshd_config sudo systemctl restart sshd exit
⑤-2 SSHの22番ポートを閉じるルールの作成
- 画面左上、Google Cloud ロゴの左にある ナビゲーション メニュー から すべてのプロダクトを表示
- ネットワーキングの VPC ネットワーク を選択
- ファイアウォール から ファイアウォール ルールを作成
- 変更した箇所が以下のテーブル
項目 値 名前 disable-ssh22 説明 22番ポートを閉じる 一致したときのアクション 拒否 ターゲットタグ disable-ssh22 送信元 IPv4 範囲 0.0.0.0/0 ☑ TCP 22 - ページの一番下にある 作成
⑤-3 SSHの3333番ポートを開くルールの作成
- もう一度、ファイアウォール ルールを作成
- 変更した箇所が以下のテーブル
項目 値 名前 enable-ssh3333 説明 3333番ポートを開く 一致したときのアクション 許可 ターゲットタグ enable-ssh3333 送信元 IPv4 範囲 0.0.0.0/0 ☑ TCP 3333 - ページの一番下にある 作成
⑤-4 設定をインスタンスに反映
- 画面左上、Google Cloud ロゴの左にある ナビゲーション メニュー から すべてのプロダクトを表示
- コンピューティングの Compute Engine を選択
- 作成時につけた インスタンス名 をクリック
- 編集 をクリック
- 表示されたページの真ん中、やや上にある
ネットワーク インターフェース > ネットワーク タグ - ファイアウォール ルールを作成したときに設定した ターゲットタグ を入力
- ページの下部にある 保存
⑥ もう一度、接続できるか確認
- コンソールに以下の1行を入力
今回は-p 3333
でポート番号を指定ユーザー名@cloudshell:~ (プロジェクト名)$ssh -i ~/.ssh/my-ssh-key -p 3333 hogehoge@[外部 IP アドレス]
- 接続できたら終わりです、お疲れ様でした
おまけ: 楽してSSH
※外部IPの設定がデフォルトの場合、IPが切り替わるごとにconfigの再設定が必要
お金がかかるが、外部IPをエフェメラル(簡単に言うと動的IP)を静的IPに変更すれば不要になる
-
exit
を入力して接続先から切断しておく - コンソールに以下の1行を入力、config を作成・編集する
ユーザー名@cloudshell:~ (プロジェクト名)$
vim ~/.ssh/config
- config ファイルの中身は以下のようにする
Host hogehoge HostName [外部 IP アドレス] User hogehoge Port 3333 IdentityFile ~/.ssh/my-ssh-key
- Esc で編集モードを抜けて Shift + Z を2回押して保存
- ウィンドウ下部のコンソールに以下の1行を入力
ユーザー名@cloudshell:~ (プロジェクト名)$
ssh hogehoge
- ⑥ もう一度、接続できるか確認 より楽してSSH接続完了
メモ
- Ubuntu 22.10以降、sshd関連に変更があるので上記コマンドで設定できない
-
③ SSHの設定 から先の一連の流れはWindows PowerShell、MacOS ターミナルからも出来る
Windows PowerShellで行う場合~(チルダ)
は$HOME
に、vim
はPowerShellに入ってないのでconfigファイルを用意する。 - GCPの無料トライアルを登録後、やってみたいこと(?)は何ですか?みたいなアンケートっぽい画面が表示されるがアンケートではなく、よく使うものをピン留めするだけの有難迷惑なのでスルー推奨
- 楽にコピペできるように書き残したかったので、各コードの頭に # (rootユーザー) と $ (一般ユーザー) は使用しない
- my-ssh-key と hogehoge は変更可能。admin, root, user のような安直なのは避けるべき
- ファイアウォールの設定 ⑤-2 と ⑤-3 の名前、ターゲットタグも変更可能。
- 無料枠 を確認したい
-
Cloud Shell を初期化したい
公式ガイド推奨バルス - "Permission denied (publickey)" の対応
- ssh コマンドをスッキリさせる
-
鍵長とハッシュ値と公開鍵暗号の方式の確認
ssh-keygen -l -f ~/.ssh/my-ssh-key.pub
-
.ssh パーミッションの一括変更
find ~/.ssh -type d -print | xargs chmod 700 ; find ~/.ssh -type f -print | xargs chmod 600
参考先