概要
Oracle Cloud に作成した 仮想マシン(インスタンス)にOS非依存でもリモートできるようにする。コンソール接続できるようにする。
Git Bash を利用した方法と,PuTTY を利用した方法の2つがある。
手順
1.接続元PC側の準備(Windows)
必要なアプリケーション
以下をインストールする
■Git か Putty (Putty の方が使い勝手はよさそう)
■RealVNC (他のVNCでも使えるかもしれない)
公開鍵の作成 (GitもPuTTyどちらを使用するにしても)
接続元PCの公開鍵をOCIにて登録する必要があります。なので作成しておきます。PowerShellにて ssh-keygen を実行する
どこに保存しますか? と聞かれるので そのまま Enter。フォルダは変えないc:\users\xxxxx/.ssh/id_rsa となっていればそのまま Enter。id_rsa.pub が必要なファイルであり,c:\users\xxxxx\.ssh フォルダに保存されていればいい。フォルダがなければ作成。(別のフォルダに出力すると後述のGit Bashでうまく動作しない)
重要
作成されるファイルは2つですが
id_rsa ・・・・秘密鍵(このファイルを持っていればどの端末からでも接続できので,厳重管理が必要)
id_rsa.pub・・・公開鍵(次の手順で,サーバーインスタンスに登録させます)
PPKファイルの作成 (PuTTY利用なら)
スタートメニューより PuTTY Key Generator を起動
Conversions – Import Key
前述で作成している “C:\Users\xxxxxx\.ssh\id_rsa”
Save private key
oci.ppk (任意)命名して保存
2.サーバー側の準備
OCI WEBサイトに接続して
コンピュート – インスタンス – 該当のインスタンス名をクリック。
インスタンスの詳細 画面が表示される。
その画面 左下 (結構下なのでスクロール)にある「コンソール接続」
「ローカル接続の作成」,前述の手順で作成した 公開鍵 id_rsa.pub を 「公開キー・ファイルのアップロード)」する
ちなみにコンソール接続は 1つしか登録できない
3.SSH接続とVNC待機
Git Bash による接続編
先程作成したコンソール接続の右端にあるメニューから,「Linux/MacのVNC接続のコピー」をクリック。クリップボードにコピーされる。 Windowsではないんです,なぜか。
Git Bash を実行
クライアントPCのスタートメニューから Git Bash を実行
黒い画面が表示されて入力待ちとなる
そこに 前述の手順でコピーしている 接続情報の文字列を貼り付ける。Enter
こんな感じでEnter押すと 止まったような画面になる。
初回接続時は,Are you sure you want to continue connecting?
と尋ねられるので,yes と入力
この黒い画面は消さずにおいておく。OCIとSSH通信中で VNC接続待ちにしている状態
PuTTY(PowerShell)での接続編
OCIサイトのコンソール接続の右端にあるメニューから「Windows VNC接続のコピー」をクリック。クリップボードにコピーされる。
メモ帳を起動して貼り付ける
$env:homedrive$env:homepath\oci\console.ppk という文字列が2か所あるので,前述で保存していた OCI.PPK ファイルのフルパス名に置き換える。
例)$env:homedrive$env:homepath\oci\console.ppk → ”D:\temp\OCI.ppk”
それか,ppkファイルと同一フォルダに ps1ファイルおいて相対パスとするなら
[string] $ppkfile = $PSScriptRoot+”\oci.ppk”
echo $ppkfile
Start-Job { Echo N | plink.exe -i $using:ppkfile -N -ssh -P 443 -l ocid1.instanceconsoleconnection.oc1.ap-xxxxxxxxx -L 5905:ocid1.instance.oc1.ap-xxxxxxxxxxxxxxxxxxxxxx:5905 instance-console.ap-xxxxxx.oraclecloud.com }; sleep 5; plink.exe -i $ppkfile -N -L 5900:localhost:5900 -P 5905 localhost -l ocid1.instance.oc1.ap-xxxxxxxxxxxxxxxxxx
メモ帳のファイルを remote.ps1 として保存
remote.ps1 を Power Shell で実行する
こんな画面になったら enterkey を押す(画面は残る)VNC待機状態となる
VNC ビューワーで localhost に接続 (Git Bash , PuTTY 共通)
接続先は localhost です。サーバー名とかOCIのアドレスではありません。
(localhost:5900 という入力にする必要もあるかもしれません)
終了
VNCはClose
GitBash または PowerShellを閉じれば完了です
論考
○コンソール接続登録は1つの公開鍵だけでした。複数の端末から接続できるようにしておくには対応する秘密鍵を配布することで対応できるかもしれません。
○ssh-keygen による鍵作成ですが,実行するたびに変わるようで,間違ってクライアントPCで実行して秘密鍵を上書きしてしまった場合は,OCIにてコンソール接続を一旦削除し新しい公開鍵を登録し直す必要がありました。
○クライアントPCにすでにVNCサーバーが稼働している場合は,Git Bashに貼り付ける文字列内にある 5900 ポート番号を 別のものに変更しないとだめでしょう。そして VNCビューワーからの接続は localhost:自分で決めた番号 という接続にあるでしょう。
〇”C:\Users\xxxxx\.ssh\known_hosts” に履歴が残っているので場合によってはファイルを削除しないと接続できないこともある
〇PuTTY方式でしている場合,PPKファイルを作成した時のPuTTYバージョンがあまりにも違いすぎると接続できない。PPKファイルをダブルクリックしてPuTTYに読み込ませてみるとわかる。new too みたいなメッセージが出る場合は,PuTTYを入れなおすかPPKファイルの作り直しをする。
プロパティ
Oracle CLud
Windows Server 2019
Windows10
Git-2.27.0-64-bit
コメント