何の備忘録?
- WindowsローカルマシンのVSCodeからGCPに接続する方法を一応書いている(準備)
- VSCode上でSSH設定する場合に注意すべき点(__これ__を残しておきたいだけ)
準備
WSL(Windows Subsystem for Linux:Windows上でLinuxディストリビューション(UbuntuやDebianなどがMicrosoft Storeで配布されている)のターミナルを使用できるシステム)で鍵を生成する方法を載せておく(<>
で囲まれた部分はそれぞれ自身の環境に依存するため読み替えるように).
$ ssh-keygen -t rsa -b 4096 -C "<GCP user email address>"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/<username>/.ssh/id_rsa): <Enter> or <Enter Path You want to save the key>
Enter passphrase (empty for nopassphrase): <Enter> or <password>
Enter same passphrase again: <Enter> or <Enter the same password above>
Your identification has been saved in <savepath>
Your public key has been saved in <savepath>
The key fingerprint is:
SHA256:<sha256 fingerprint>
The key's randomart image is:
+---[RSA 4096]----+
| <some char art> |
+----[SHA256]-----+
$
ほかのインスタンスですでにid_rsa
が作成されていたら,別のrsaファイル名に変えておく(例えば,id_rsa2
).
Windowsでも作成できるものの,著者の経験としてシステム開発ではLinuxを標準としていることが多いため,Windowsのコマンドに関しては言葉を知らない赤ちゃんレベルに何もわからない.
さて,無事作成された鍵であるが,デフォルトで指定したパスで保存した場合,WSLからしかアクセスできない場所にあることに注意が必要である.
これが以下のConfigを設定するときにパスが煩雑になってしまうため,備忘録として残しておく.
本論的内容
VSCode 上で GCP 上に作成したインスタンスにssh接続したい場合,標準的にはconfigファイルが作成される.以下の形式のように.
Host <Arbitrary Host name>
HostName <External IP address>
User <UserName> (_付きのデフォルトユーザーはNG)
Port 22 (default)
IdentityFile <~/.ssh/id_rsa by default>
IdentitiesOnly yes
いいたいこと
ここで,IdentityFile ~/.ssh/id_rsa
の部分!WSLユーザーなら~
はWSL上のホームディレクトリーを指していると思うかもしれない(自分はそう思い込んでいた!).しかし,これはWindowsのホームディレクトリである.つまり,~
=C:\Users\ユーザ名
なのである!
だから,WSLで作成した鍵の保存パスを参照しない!
よって,WSLで作成した場合,WSLターミナルでC:\Users\ユーザ名\.ssh\
にid_rsa
とid_rsa.pub
を移動(コピー)する必要がある.
※ IdentityFile
のところで直接WSLで作成した鍵のパスを書けばいいと思うかもしれないが,筆者は勧めない.まず,WSLのパスとWindowsのパスは共有されていないため,直接パスを見つけることは容易でないうえ,WSLも設計上,Windowsアプリからの直接のパス参照は非推奨としているはずである.そもそも,WindowsのパスでWSLのホームディレクトリはどこにあるのかも不明である(探せばあるかもしれないが,そんなことはしないほうがいいのは当たり前).
追記
dockerをsudoなしで一般ユーザーで使用するためには,
$ sudo gpasswd -a <username> docker
を実行するようにね.