![仮想環境のゲストOSにホストOSからSSH公開鍵接続する](https://mitikusa-engineer.com/wp-content/uploads/2022/06/Ubuntu-1024x538.png)
Windowsから仮想環境へのSSH公開鍵接続手順をまとめました。
環境
ホストOS | Windows 10 21H1(19043.1706) 64bit |
仮想化ソフトウェア | VirtualBox 6.1.34 r150636 (Qt5.6.2) |
ゲストOS | Ubuntu 22.04 |
コマンドプロンプトで確認
winver
ver
wmic os get osarchitecture
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000000.jpg)
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89-%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88-2022_06_11-9_42_01.png)
設定手順
Virtual Box + ゲストOS(Ubuntu)+ WinSCPのインストール
以下の2つを参考にインストールして下さい。
- Virtual Boxをインストール
- 仮想環境にUbuntuをインストール
- WinSCPのインストール(scpコマンドを使えるなら不要)
ホストOSでキーペアを作成
接続元となるホストOSでキーペア(秘密鍵と公開鍵)を作成します。
コマンドプロンプトを起動し、下記コマンドを実行します。
※ed25519鍵を使います。-t以降を省略するとRSA鍵になります。
ssh-keygen -t ed25519
「どこに作成するか」と「キーフレーズを設定するか」を聞かれますが、ここではどちらも設定しません。
Enter file in which to save the key (C:\Users\[ユーザー名]/.ssh/id_ed25519):[空欄でEnter]
Enter passphrase (empty for no passphrase):[空欄でEnter]
Enter same passphrase again:[空欄でEnter]
キーが作成されたことを確認します。
dir C:\Users\[ユーザー名]\.ssh
『id_ed25519』が秘密鍵で、『id_ed25519.pub』が公開鍵です。
公開鍵をゲストOSにコピー
ゲストOSに公開鍵をコピーします。
CLIに慣れてない人はFTPクライアントツールを使うのが簡単なので、ここではWinSCPを使ってコピーします。
慣れてる人はscpコマンドなどを使ってコピーして下さい。
ゲストOSを起動し、WinSCPでログインします。
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000001-10.jpg)
下記ディレクトリに『id_ed25519.pub』をコピーします。
ホストOS(左)からゲストOS(右)にドラッグアンドドロップでコピーできます。
/home/[ユーザー名]/.ssh
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000002-10.jpg)
authorized_keysに公開鍵の内容を転記
ゲストOSに普通にログインするか、WinSCPでコンソールを起動してください。
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000004-5.jpg)
下記コマンドを実行します。
cd /home/[ユーザー名]/.ssh
cat ./id_ed25519.pub >> ./authorized_keys
chmod 600 ./authorized_keys
rm ./id_ed25519.pub
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000003-7.jpg)
ホストOSで接続設定
テキストエディタなどでconfigファイルを作成し、下記に格納します。
C:\Users\[ユーザー名]\.ssh
下記はconfigファイルの例です。
Host [接続名]
HostName [ゲストOSの名前またはIPアドレス]
User [ゲストOSの接続ユーザー名]
IdentityFile C:\Users\[ユーザー名]\.ssh\id_ed25519
IdentitiesOnly yes
PasswordAuthentication no
※既にVS CodeからパスワードによるSSH接続ができるようになっている場合
デフォルトであれば上記configファイルを参照するようになっているはずです。
つまり、上記ファイルを用意しておくことで、VS CodeからもSSH公開鍵接続できるようになります。
ホストOSから接続確認
コマンドプロンプトからsshコマンドで接続してみます。
configファイルの[接続名]を指定することで簡潔に記述できます。
ssh [接続名]
ゲストOSへのリモートでのパスワードログインを禁止
上記でログインできたら、下記を更新してパスワードログインを禁止します。
vi /etc/ssh/sshd_config
・
・
・
# PasswordAuthentication yes
PasswordAuthentication no
sshサービスを再起動します。
systemctl restart ssh
ここまでやると、WinSCPからパスワードログインができなくなっているはずです。
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000005-5.jpg)
WinSCPも公開鍵認証に変更
なので、WinSCPからも公開鍵認証でログインできるように設定します。
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000006-4.jpg)
「鍵の形式がサポートされていないため変換しますか?」といった旨のメッセージが出ますが
気にせず変換して進めてください。すると、ppk形式のファイルが作成されます。
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000007-4.jpg)
改めて接続してみると、問題なくつながるはずです。