タイトルの通りです。
ConoHa WING のレンタルサーバーは VSCode Remote-SSH 拡張機能を使ったSSH接続ができません。
(ConoHa VPS なら接続できるようなのですが…。)
XSERVERなど、レンタルサーバーによっては接続できることもあるらしいのですが。
ほかにもRemote-SSH拡張機能が使えなくて困ってる人がいるかもしれないので、とりあえず簡単にメモっておきます。
環境
レンタルサーバー: ConoHa WING(ベーシックプラン)
VSCode: 1.73.1(現時点最新版)
Remote-SSH: v0.92.0(現時点最新版&プレビュー)
前提条件
PowerShellなどでSSH接続はできる
PS C:\Users\User> ssh "(ユーザー名)@www***.conoha.ne.jp" -p "(ポート番号)" -i "(プライベートキーのパス)"
ユーザー名、ホスト名(www***.conoha.ne.jp)、ポート番号 は
ConoHaコントロールパネル>サーバー管理>SSH
で確認できます。
~/.ssh/config
=C:\Users\User\.ssh\config
に接続情報が設定してあれば、
PS C:\Users\User> ssh "(Host として登録した名前)"
でも接続可能。
ちゃんと適切なパラメータを指定してあれば、ConoHa WINGの場合はパスワード入力無しで接続できるはずです。
⇒ できない場合、なんかどっか間違えてるかよく知らない原因のエラーだと思います。
ここでは扱いません。
エラーメッセージで検索するなりして頑張ってください。
VSCodeの設定で各種エラー回避策は設定してある
remote.SSH.configFile
: 絶対パスを設定
remote.SSH.connectTimeout
: いちおう長めの秒数を設定
remote.SSH.remotePlatform
: 適切なペアを設定(conoha:linux 的な感じに)
remote.SSH.showLoginTerminal
: オン
remote.SSH.useLocalServer
: オフ
ふつうの人はこれだけ設定すればまず接続するんだそうな…
その他もろもろ
今回は直接関係はないですが、以下のような原因で接続できない場合もあるそうです。
・プライベートキーファイルのアクセス権が適切に設定してある
⇒ lightsailで作成したインスタンスにVSCodeからSSH接続しようとしたら躓いた時の覚え書き
・サーバー側の~/.vscode-server/
ディレクトリ以下を念のため削除してみる
⇒ VSCodeのリモートSSHが急に接続できなくなったら。
・サーバー側にvscode-server
関連のゾンビプロセスがいないか?
⇒ VSCode Remote Developmentの無限ループへの対処
原因と解説策
VSCodeのターミナルを表示して確認してみたところ、以下のようなエラーメッセージが出ていることが確認できました。
(出力>Remote-SSH で他にも詳しい情報が確認できます)
channel 3: open failed: administratively prohibited: open failed
いろいろと四苦八苦したところ、公式リファレンスのトラブルシューティング にこのエラーメッセージで対応策が書いてありました。
公式トラブルシューティングの情報
Enable TCP Forwarding on the remote host
Remote - SSH extension makes use of an SSH tunnel to facilitate communication with the host. In some cases, this may be disabled on your SSH server. To see if this is the problem, open the Remote - SSH category in the output window and check for the following message:
open failed: administratively prohibited: open failed
If you do see that message, follow these steps to update your SSH server's sshd config:
- Open
/etc/ssh/sshd_config
orC:\ProgramData\ssh\sshd_config
in a text editor (like Vim, nano, Pico, or Notepad) on the SSH host (not locally).- Add the setting
AllowTcpForwarding yes
.- Restart the SSH server. (On Ubuntu, run
sudo systemctl restart sshd
. On Windows, in an admin PowerShell run,Restart-Service sshd
).- Retry.
意訳
TCPポートフォワーディングをリモートホストで有効化する
Remote-SSHは、ホストとの通信を確立するためにSSHトンネルを使用します。
場合によっては、この機能がサーバー側で無効になっていることがあります。
これが問題であるかどうかを確認するには、出力ウィンドウでRemote - SSHカテゴリを開き、次のメッセージが表示されることを確認します:
open failed: administratively prohibited: open failed
このメッセージが表示されていた場合は、以下の手順でSSHサーバーのsshd configを更新してください:
-
/etc/ssh/sshd_config
orC:\ProgramData\ssh\sshd_config
をSSHホスト(ローカルではなく)のテキストエディタで開く - 設定
AllowTcpForwarding yes
を加える - SSHサーバーを再起動する。
Ubuntuではsudo systemctl restart sshd
を実行。Windowsでは、管理者権限のPowerShellRestart-Service sshd
を実行。 - 再チャレンジ
対応策(対応不能)
/etc/ssh/sshd_config
が存在しなかったため追加しようとしたのですが、root権限が無いと/etc/ssh/
へのファイル追加ができないため、詰みました。
(ConoHa WINGのサーバーではroot権限に昇格できないっぽい)
VSCode公式SSH拡張機能つかってみたい~~。
この結論を得るまでに参考にしたページ
※ブラウザに開きっぱなしにしてあったページのまとめです。直接関係ない情報も含みます