こんばんは、エンジニアの眠れない夜です。
GCPにSSHで接続する方法をSSH接続に慣れていない方向けに説明します。
GCPにSSHで接続するまでの全体像
- ローカルPCで秘密鍵/公開鍵を作成します。
- GCPのインスタンスにローカルの公開鍵を登録します。
- ローカルPCからGCPインスタンスに秘密鍵を使って接続します。
イメージとしては勘合貿易です。
- 秘密鍵と公開鍵を作成
- 相手に公開鍵(右側)を渡す
- アクセスするときは秘密鍵(左側)を持って一致するか確認
これで秘密鍵/公開鍵の仕組みは二度と忘れませんね!
ローカルPCで秘密鍵/公開鍵を作成します。
まずは自分のPCのターミナルで下記のコードを実行して秘密鍵/公開鍵を作成します。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
your_email@example.comは適宜置き換えてください。
3回入力を求められます。(SSHを作成するのが初めてで面倒な人はEnter3回押せばOKです。)
- 1回目は保存場所(ファイル名)
- 2回目と3回目はパスワード
1回目の質問の後に既に秘密鍵/公開鍵を作成している人は上書きしていいか聞かれるので no を選択してください。
消してもいい場合は yes でもいいですが、既にどこかでこの鍵を使用していると使えなくなるので注意が必要です。
1回目の質問時にファイル名を変更すれば新規で秘密鍵/公開鍵を作成できます。
2回目と3回目は質問は接続するたびに毎回パスワードを聞かれるのが面倒なので、パスワードを入力せずにそのままエンターを押します。もちろんパスワードを入力してもOKです。その方が安全です。
こんなのが表示されれば鍵の作成は成功です!
+---[RSA 4096]----+
| o++BB|
| =o *+|
| . .+ +|
| . o *o o=..|
| ..o+..*==.|
+----[SHA256]-----+
続いて、下記のコードを実行すると公開鍵を表示できます。
cat ~/.ssh/id_rsa.pub
こんな感じで表示されます。初めから最後までコピをします。
ssh-rsa AAAAB3NzaC 〜省略〜 1fQQ== user_name
次のステップで貼り付けるのでそれまで他のものをコピーしないように気をつけてください。
GCPのインスタンスにローカルの公開鍵を登録します。
GCPのインスタンス一覧から接続したいインスタンスを開きます。
そして、「編集」を押すと下の方に「SSHキーがN個あります」という表示があるのでその下の、「表示して編集する」をクリックします。
すると画面が開くのでそこに先ほどコピーした公開鍵を貼り付けます。
テキストボックスの左にユーザー名が表示されるのが確認できたら画面を下までスクロールして「保存」します。
ローカルPCからGCPインスタンスに秘密鍵を使って接続します。
最後にローカルからインスタンスに接続ができれば完了ですね!
ローカルのPCのターミナルを開いて
ssh user_name@インスタンス外部IPアドレス -i 秘密鍵のパス
を入力すればOKです。インスタンスの外部IPアドレスはインスタンス一覧から確認できます。
入力例はこんな感じです。環境にもよりますが、user_nameと外部IPアドレスを置き換えればそのまま利用できます。
ssh user_name@35.221.121.130 -i ~/.ssh/id_rsa
これで無事にGCPのインスタンスにSSH接続ができましたね^^
おまけ
接続する時に毎回上記の情報を引っ張ってきて入力するのは面倒なのでconfigファイルに設定内容を保存します。
下記のコマンドを実行してconfigファイルを編集します。
vim ~/.ssh/config
入力する内容は下記の通りです。
Host 任意の接続名
HostName ホスト名(ドメイン or IP)
User ユーザー名
Port ポート番号
IdentityFile 鍵へのPATH(例えば~/.ssh/hoge.key)
先程接続に使った情報を元にした入力例だとこの様になります。
StrictHostKeyChecking no
Host server_name
HostName 35.221.121.130
User user_name
Port 22
IdentityFile ~/.ssh/id_rsa
1行目は初回SSH接続時に確認されないようにするための設定です。
Hostをserver_nameと書きましたがここは好みで変更してください。
さて、SSHで接続してみましょう。入力する内容は
ssh Host
だけで接続できます。Hostはserver_nameと設定したので
ssh server_name
たったこれだけで次からサーバーに接続できるようになりました!便利ですね(^^)♪
[…] エンジニアの眠れない夜[秘密鍵/公開鍵]GCPにSSHで接続する方法https://sleepless-se.net/2018/09/15/gcp-ssh/こんばんは、エンジニアの眠れない夜です。 GCPにSSHで接続する方法をSSH接続に慣れて […]
こんにちは
ssh-keygenで秘密鍵/公開鍵の作成の際に
ビット数をデフォルトから4096に変更するのは何か理由があるのでしょうか?
かつろぐさん
コメントありがとうございます。
デフォルトの設定より強固になります。
参照ページ
https://qiita.com/hietahappousai/items/a7fae4838e510136fc08
[…] https://sleepless-se.net/2018/09/15/gcp-ssh/ […]