Photon OS は、クラウド環境に最適化された非常に軽量でミニマリストな Linux OS です。
簡単ですが、こちらの記事の冒頭で、Photon OS について紹介をしてます。
非常にシンプルな OS ながら、簡単にデプロイできるので、K8s のクライアントとして、kubectl を叩くための VM としては、とても重宝しています。
しかし、シンプルが故に、ゴリゴリの開発環境として使うには、少し扱いづらい部分もあります。
ただ、VSCode が使えたとして、「ちょっとログを読みたいな」「ちょっと Dockerfile を書きたいな」という場面はあると思います。
そんな時に、VSCode の Remote - SSH の拡張機能を使って、遠隔の Photon OS 上のファイルを VSCode で編集できると、とても幸せになれるので、今回はその方法をご紹介します。
前提
Photon OS がデプロイ済みであり、最低限の設定として、こちら↓のあたりが行われている想定で、手順を記載しています。
また、執筆時点で、Photon OS は ver 4.0 を利用しています。
# cat /etc/photon-release
VMware Photon OS 4.0
PHOTON_BUILD_NUMBER=2f5aad892
VSCode の方も、Remote - SSH の拡張機能をインストールしておいてください。
依存パッケージのインストール
VSCode が Remote - SSH で、遠隔の Linux OS にアクセス後、内部では、必要なファイルをダウンロードし、何かをビルドしているようで、下記のパッケージがインストールされていないと、接続後にエラーとなってしまいました。
そこで、あらかじめ依存パッケージを Photon OS にインストールしておきます。
tdnf install -y tar build-essential ca-certificates curl wget
sshd コンフィグの変更
VSCode の Remote - SSH では、SSH のポートフォワーディングを使っているようで、接続先のリモートホストで、この機能が有効になっている必要があります。
しかし、Photon OS では、セキュリティの観点から、この機能がデフォルト無効になっているため、これを有効にしておきます。
まず、vi
で sshd_config
を開き
vi /etc/ssh/sshd_config
下記の部分を編集して、保存します。
# !!注意!!
# ファイルの下の方に AllowTcpForwarding no が設定されているため、
# その行は削除 or コメントアウトした上で、下記を追記してください!
AllowTcpForwarding yes
PermitOpen any
少しだけ、設定の意味を記載しておくと、AllowTcpForwarding yes
で TCP ベースのポートフォワーディングを有効にしています。
また、その転送先に関しては、PermitOpen host:port
で、転送先を絞ることができます。しかし、ここでは簡単のため、特に制限を設けず、任意のホストへの転送を許可しています。もし、よりセキュアに環境を構築する必要がある場合には、この設定を使うことで、アクセスできる端末を制限することができます。
最後に、sshd_config
を編集しているので、sshd
を再起動させて、設定を反映させます。
systemctl restart sshd
接続先の設定
例えば、Mac 上で、下記のように、SSH 接続の設定を入れておくと、VSCode 上に接続先の候補として表示されます。
Host <接続先ホストのエイリアス名>
HostName <接続先ホストの IP or FQDN>
User <ユーザー名>
IdentityFile <SSH 接続する際の秘密鍵で普通は ~/.ssh/id_rsa で良いはず>
# 踏み台がある場合には下記も追加
ProxyCommand ssh -CW %h:%p <踏み台サーバーのエイリアス名>
VSCode から接続
後は VSCode に Remote - SSH の拡張機能がインストールされていれば、[Remote Exproler] から接続したいホストを選択することで、遠隔の Photon OS 上のファイル/フォルダを、あたかもローカルにあるかのように開くことができます。