2019年2月19日火曜日

Windows10のPowerShellからGCPへのSSH接続

TwitterでWindows10 バージョン1803からOpenSSHが実装されてるらしいとの情報を見たので少し確認。

アプリと機能」から「オプション機能の管理」を確認すると確かに「OpenSSHクライアント」がインストールされている。

OpenSSH



せっかくなのでGoogle Cloud Platform(以下GCP)に無料枠でVMを作成してSSHで繋げて見ようかと。


GCP」に移動して自分のプロダクトへ移動して
Compute Engine」 - 「VMインスタンス」 から新規作成。

スペックはGCPの無料枠である「Always Free」の範囲内に収めるために以下の構成で。

リージョン:us-west1
ゾーン:us-west1-b
マシンタイプ:f1-micro(CPU:0.6GHz、メモリ:0.6GB)
OS:Cent OS 7 30GBの標準の永続ディスク

VM


ついでに外部公開用の固定IPもVMに紐付ける1個だけなら無料らしいので一緒に作成する。
global


作成したVMの右側にあるSSHを選べばブラウザからSSHでのアクセスは可能。
VMSSH



でもまぁコレじゃ面白くないのでWindowsから接続できるように準備する。
一応「OpenSSH」のマニュアルページを参照。


PowerShellを起動して以下コマンド実行
> ssh-keygen -t rsa -b 4096

-t で暗号方式を RSA に指定
-b で鍵の長さを 4096 に指定(デフォルト値は2048)
ssh-keygen


これでユーザフォルダ直下に「.ssh」フォルダが作成され、公開鍵と秘密鍵が生成された。
.ssh


以下コマンドを実行して公開鍵の内容を表示する。
> cat ~/.ssh/id_rsa.pub
rsa

ssh-rsa ** ~ ** == (ユーザ名)の様な表記で表示されるので全てコピペする。
もちろん該当ファイルをテキストエディタなどで開いても同様の物が見れる。


SSHで繋げたいVMを選んで編集画面に入ると「SSH認証鍵」の項目があるので、こちらの空欄に先程の文字列をそのままペーストする。


公開鍵


自動的に空欄の左側にSSHでのログイン用ユーザ名が表示されるが、
このVM内にも同じユーザ名で自動的にユーザを作成してくれる。

便利だ。

内容を確認したら保存ボタンで設定内容を更新。


PowerShellから下記コマンドでアクセスできるかを確認する。
> ssh (ユーザ名)@(IPアドレス) -i ~/.ssh/id_rsa




これでPowerShellからGCPのVMへSSHでログインできるようになったものの、毎回コレを入力するのは面倒なので「config」ファイルを作成する。

先程のログインで「known_hosts」ファイルが作成されていることも念の為確認。
こちらは接続したサーバ側のSSHサーバ証明書が格納されている。



.ssh」フォルダの直下に「config」ファイルを作成してテキストエディタで下記内容を入力

Host (任意の名称)
HostName (IPアドレス or ドメイン名) 
User (ユーザ名)
Port 22(接続ポート)
IdentityFile ~/.ssh/id_rsa(秘密鍵のパス)


今回はHost名をmail-srvに設定した。その内メールサーバにしたい。
これでPowerShellから
> ssh mail-srv(設定したHostの名称)でアクセスして問題なければ大丈夫かな。


GCPの無料枠は中国やオーストラリアからのVM宛の通信は無料枠対象外だから、気が向いたらSSHのポートを初期の22から別に変更しよう。


~ブログ更新~

設定してみた。