はじめに
リモートアクセスした先のサーバでVSCode拡張機能のDev Containersでコンテナにアクセスしようとしたのですが、上手くアクセスできない現象が発生しました。その時の対応の記録です。
問題発生状況
環境としては以下になります。
- サーバ: Ubuntu Server 20.04 LTS
- PC: Windows 11
通常、サーバのSSHアクセスには公開鍵認証が設定されるのが一般的かと思いますが、この環境はとある事情でパスワード認証が使われていました。この環境に対して、VSCodeのRemote - SSHを使ってサーバにアクセスし、そこからDev Containersでコンテナにアクセスしようと試みたら正しく動いてくれませんでした。
具体的には、Dev ContainersのDev Containers: Reopen in Container
を呼び出すと、いつまでたっても処理が先に進みません。Setting Up Dev Containers (show log)
でログを確認すると、下図のようなメッセージのみが表示され、そこからずっと待ちの状態でした。
問題回避方法
これは、Dev Containerのバージョンの問題でした。上記の問題が発生したときのDev Containers拡張機能のバージョンはv0.255.4でしたが、これをv0.262.3に上げることで解消できました。バージョンを上げて実行すると、下図のようにパスワードを入力するコマンドパレットが表示されるようになります。
処理が先に進まなかったのは、認証(パスワード入力)が必要なポイントでパスワード入力するコマンドパレットが表示されず何もできない状態だったと考えられます。
後日談
単にバージョンアップすればよいのかと思っていたのですが、これには続きがあります。つい先日、拡張機能の新しバージョンが出たのですが、それを使ったら類似の現象が発生しました。
現象としては、Dev Containers: Reopen in Container
を呼び出すと、Setting Up Dev Containers (show log)
の表示も消えてしまします。そして、再度Dev Containers: Reopen in Container
を呼び出すとポップアップでエラーメッセージが表示されました。
ポップアップの最後の方にPermission denied (publickey,passowrd).
というエラーメッセージが記載されていたので、原因は同じと考えられます。
これに関しては、拡張機能のバージョンをダウングレードすることで対応できました。現時点(2022年12月)では、v0.262.3 ~ v0.265.0 で問題が起きないことを確認しています。
おわりに
この現象は、パスワード認証を行っているサーバにリモートアクセスして、そこでDev Containersを利用しようとした場合に見られるものです。公開鍵認証の場合にはこの現象は発生しません。