ParallelsのUbuntu Linuxにssh接続する

3 min read読了の目安(約3000字

使用中の環境によっては上手く動作しない可能性があります。

動作環境

デバイス

iMac (Retina 5K, 27-inch, 2020)

OS

macOS Big Sur v11.2.3

仮想環境

Parallels Desktop Pro Edition バージョン 16.1.3 (49160)

仮想環境のセットアップ

linuxが入っている程で進めます。

まずUbuntuマシンのIPアドレスを調べるためにnet-toolsをインストールします。また、ssh通信をするためにopenssh-serverも一緒にインストールしておきます。

sudo apt install openssh-server

インストールが完了したらIPアドレスの確認をします。

ip a

net-toolsに含まれるifconfigでIPアドレスを調べます。

enp0s5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.211.55.3  netmask 255.255.255.0  broadcast 10.211.55.255
...

今回使用するのは二行目のinetの後に続くアドレスです。

macOSのセットアップ

ただlinuxとssh通信をするだけなのは勿体無いので、VSCodeのRemote-sshを使ってVSCodeでlinuxのコードを触ることが出来る様にします。

VSCodeのダウンロード

Remote-sshを利用するための拡張機能がいくつかありますが、今回はRemote - SSH: Editing Configuration Filesを利用します。

Remote - SSH: Editing Configuration Filesは2021/4/13時点でpreview版なので動作が安定しない可能性があります。

アプリケーション、拡張のインストールとは別にssh接続の準備をします。
ssh keyは使い回してもいいですし、新たに作って頂いてもいいと思います。

参考: お前らのSSH Keysの作り方は間違っている

ssh接続する

ssh接続するためには

ssh user-name@ip-address

と書きますが、ip-addressは先ほど確認したものでuser-nameはparallelsにログインするためのユーザー名になります。デフォルトであればparallelsだと思います。

ssh parallels@10.211.55.3

でssh接続することが出来ます。初めて接続する時はfinger printの確認がありますが進めて問題ありません。途中パスワードの入力を求めてきますがこちらはiMacのパスワードではなく、仮想環境のユーザーログイン用パスワードになります。

余談になりますが、ここでのfinger printは~/.ssh/known_hostsを見ると
ホスト 鍵の種類 鍵
の形で保存されている事がわかります。

10.211.55.3 ecdsa-sha2-nistp256 ~~~

上手くログインできるとWelcome to Ubuntu ...のログがでてターミナル上でssh接続ができました。試しにpwdlsでディレクトリを確認してみると仮想マシンにいる事がわかります。

参考: ssh
参考: ssh-server-finger-print

パスワードなしでssh接続する

ssh接続できる様になりましたが、今の状態だとssh接続するたびにログインパスワードを求められるので公開鍵を渡してパスワード入力を省略します。

最初の方にあらかじめ作成したssh keyの公開鍵を渡します。ドラッグ&ドロップでもいいですが、scpコマンドを使用して公開鍵を渡します。

scp ~/.ssh/~~.pub parallels@10.211.55.3:~/.ssh/authorized_keys

上記のコマンドは一つの公開鍵を登録する場合には問題ありませんが、追加で公開鍵を登録したい場合は上書きではなく追記する必要があります。

公開鍵を渡したら、次はssh接続時に使用する秘密鍵を指定する必要があるのでconfigを追加します。

~/.ssh/config
Host parallels
  User parallels
  HostName 10.211.55.3
  Identityfile ~/.ssh/~~
  IdentitiesOnly yes

ホスト名は好きな名前でsshコマンドに渡す名前になります。上記の場合だとssh parallelsになります。UserはUbuntuのユーザー名を指定し、HostNameは先ほどのIP Addressを。Identityfileは先ほど私た公開鍵とセットになっている秘密鍵のパスを指定します。Identityfileを渡す必要があるのでIdentitiesOnlyはyesに設定します。

以上の設定が完了すると

ssh parallels

でssh接続できる様になりました。

VSCode Remote-SSHで接続する

VSCodeを開いた後、cmd + shift + pでもいいですし、左下の緑色のアイコンをクリックし、
Remote-SSH:Connect to Host...を選択し、先ほど登録したhostを選ぶことでVSCodeでssh接続する事ができました。

ターミナルからssh接続したVSCodeを開きたい場合などはこちらなどを利用させていただくのがいいと思います。