ConoHa WINGのサーバーはVSCode Remote-SSHで接続できない

タイトルの通りです。

ConoHa WING のレンタルサーバーは VSCode Remote-SSH 拡張機能を使ったSSH接続ができません。
（ConoHa VPS なら接続できるようなのですが…。）

XSERVERなど、レンタルサーバーによっては接続できることもあるらしいのですが。
ほかにもRemote-SSH拡張機能が使えなくて困ってる人がいるかもしれないので、とりあえず簡単にメモっておきます。


# 環境
レンタルサーバー: ConoHa WING（ベーシックプラン）
VSCode: 1.73.1（現時点最新版）
Remote-SSH: v0.92.0（現時点最新版＆プレビュー）


# 前提条件
## PowerShellなどでSSH接続はできる

```posh
PS C:\Users\User> ssh "(ユーザー名)@www***.conoha.ne.jp" -p "(ポート番号)" -i "(プライベートキーのパス)"
```

ユーザー名、ホスト名（www***.conoha.ne.jp）、ポート番号 は
[ConoHaコントロールパネル＞サーバー管理](https://manage.conoha.jp/Wing/Server)＞SSH
で確認できます。

`~/.ssh/config`＝`C:\Users\User\.ssh\config`に接続情報が設定してあれば、

```posh
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接続しようとしたら躓いた時の覚え書き](https://qiita.com/AJ_sk_show/items/d0bf53565eded6070c55)

・サーバー側の```~/.vscode-server/```ディレクトリ以下を念のため削除してみる
⇒ [VSCodeのリモートSSHが急に接続できなくなったら。](https://qiita.com/fate_shelled/items/c864f31a47ebd8658698)

・サーバー側に`vscode-server`関連のゾンビプロセスがいないか？
⇒ [VSCode Remote Developmentの無限ループへの対処](https://zenn.dev/hpp/articles/88ee19f7c3a62e)


# 原因と解説策
VSCodeのターミナルを表示して確認してみたところ、以下のようなエラーメッセージが出ていることが確認できました。
（出力＞Remote-SSH で他にも詳しい情報が確認できます）
```
channel 3: open failed: administratively prohibited: open failed
```

いろいろと四苦八苦したところ、[公式リファレンスのトラブルシューティング](https://code.visualstudio.com/docs/remote/troubleshooting#_troubleshooting-hanging-or-failing-connections) にこのエラーメッセージで対応策が書いてありました。

## 公式トラブルシューティングの情報
>**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](https://www.ssh.com/ssh/sshd_config/):
>
>1.    Open ```/etc/ssh/sshd_config``` or ```C:\ProgramData\ssh\sshd_config``` in a text editor (like Vim, nano, Pico, or Notepad) on the **SSH host** (not locally).
>1.    Add the setting ```AllowTcpForwarding yes```.
>1.    Restart the SSH server. (On Ubuntu, run ```sudo systemctl restart sshd```. On Windows, in an admin PowerShell run, ```Restart-Service sshd```).
>1.    Retry.

### 意訳

**TCPポートフォワーディングをリモートホストで有効化する**

Remote-SSHは、ホストとの通信を確立するためにSSHトンネルを使用します。
場合によっては、この機能がサーバー側で無効になっていることがあります。
これが問題であるかどうかを確認するには、出力ウィンドウで**Remote - SSH**カテゴリを開き、次のメッセージが表示されることを確認します：
> open failed: administratively prohibited: open failed

このメッセージが表示されていた場合は、以下の手順でSSHサーバーの[sshd config](https://www.ssh.com/ssh/sshd_config/)を更新してください：
1.    `/etc/ssh/sshd_config` or `C:\ProgramData\ssh\sshd_config` を**SSHホスト**（ローカルではなく）のテキストエディタで開く
1.    設定`AllowTcpForwarding yes`を加える
1.    SSHサーバーを再起動する。
Ubuntuでは`sudo systemctl restart sshd`を実行。Windowsでは、管理者権限のPowerShell`Restart-Service sshd`を実行。
1.    再チャレンジ

## 対応策（対応不能）
`/etc/ssh/sshd_config`が存在しなかったため追加しようとしたのですが、root権限が無いと`/etc/ssh/`へのファイル追加ができないため、詰みました。
（ConoHa WINGのサーバーではroot権限に昇格できないっぽい）

VSCode公式SSH拡張機能つかってみたい～～。


# この結論を得るまでに参考にしたページ
※ブラウザに開きっぱなしにしてあったページのまとめです。直接関係ない情報も含みます

https://code.visualstudio.com/docs/remote/ssh#_remember-hosts-and-advanced-settings

https://code.visualstudio.com/docs/remote/troubleshooting#_troubleshooting-hanging-or-failing-connections

https://atmarkit.itmedia.co.jp/ait/articles/1701/26/news015.html

https://www.teamxeppet.com/teraterm-ssh/

https://docs.oracle.com/cd/E62101_01/html/E62749/sshuser-30.html

https://qiita.com/AJ_sk_show/items/d0bf53565eded6070c55

https://qiita.com/tattn/items/a03cbf7c185d7efa6769

https://qiita.com/fate_shelled/items/c864f31a47ebd8658698

https://nxmnpg.lemoda.net/ja/5/sshd_config

https://nxmnpg.lemoda.net/ja/5/ssh_config

https://daeuwordpress.com/vscode-ssh/

https://dubdesign.net/web/rental-surver/conohavps-no1/

https://www.cocre-logo.com/blog/4113/

https://qiita.com/nlog2n2/items/1d1358f6913249f3e186

https://atmarkit.itmedia.co.jp/ait/articles/1908/02/news015.html

https://choppydays.com/ssh-keygen-heteml/

https://qiita.com/kobake@github/items/d866392c07b03da099bf