その他について詳しく解説します

  • Mac から VS Code Remote-SSHお名前.com RS(共用)へ接続して開発できる?
  • SSH/SFTP は問題なさそうだが、VS Code Server は動くの? glibc は足りる?
  • もし Remote-SSH が難しいなら、現実的な代替運用や移行先は?

この記事では、以上の疑問にお答えします。

この記事のポイント!

  • 結論:SSH/SFTP は可。ただし Remote-SSH は実用不可
  • 理由:VS Code Server の glibc 要件未満、旧版でも 最終段フォワーディングが毎回切断
  • 代替:① SFTP 同期+端末 SSH/② glibc ≥ 2.28 の VPS/EC2 へ移行。

【前提】検証の目的と背景

Mac(Apple Silicon)から VS Code の Remote-SSHお名前.com RS(共用)へ接続し、日常開発に耐えうるかを検証しました。

RS は CloudLinux/CentOS7 相当・kernel 3.10 系で、glibc を含むユーザーランドが古めです。

共用につき 任意ポート待受・常駐デーモンは原則非推奨です。

【環境】クライアント・サーバ構成

  • クライアント:macOS(Apple Silicon)
  • VS Code:1.100.2(最新系)、1.85.2(やや古め)
  • Remote-SSH 拡張:0.107.1
  • サーバ:お名前.com RS(CloudLinux/CentOS7 相当, kernel 3.10 系)
  • 認証:鍵認証(ed25519 or pem)、Port 8022
  • 本記事のサンプルでは [HOST]/[USER]/[KEYFILE]/[ALIAS] をトークン表記(実値に置換してご利用ください)。

【結論】要約

  • SSH/SFTP は問題なく利用可能。
  • Remote-SSH は不可。最新系は glibc 要件未満で起動不能。旧版は フォワーディングで切断
  • 代替:SFTP 同期+端末 SSH/または VPS/EC2 へ移行

【手順と結果】時系列の検証

1) 鍵の用意と SSH 接続の確認

chmod 600 ~/.ssh/[KEYFILE].pem
Host [ALIAS]
  HostName [HOST].onamae.ne.jp
  User     [USER]
  Port     8022
  IdentityFile ~/.ssh/[KEYFILE].pem
  IdentitiesOnly yes
  AddKeysToAgent yes
  UseKeychain yes
ssh [ALIAS]
[[USER]@[HOST] ~]$ ls -la

2) VS Code 1.100.2(最新系):glibc 不足で失敗

/home/[USER]/.vscode-server/bin/848b80.../node: /lib64/libm.so.6: version `GLIBC_2.27' not found
/home/[USER]/.vscode-server/bin/848b80.../node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
/home/[USER]/.vscode-server/bin/848b80.../node: /lib64/libc.so.6: version `GLIBC_2.28' not found

VS Code Server(Node 20 系)起動不可。

3) VS Code 1.85.2(やや古め):起動はするがフォワーディングで失敗

Error: listen EACCES: permission denied /run/user/[USER]/vscode-ssh-remote-server-sock-xxxxx
{
  "remote.SSH.remoteServerListenOnSocket": false
}
Server bound to 127.0.0.1:45000 (IPv4)
Extension host agent listening on 45000
Remote server is listening on port 45000
Starting forwarding server...
[Forwarding server port xxxxx] Got connection 0
[Forwarding server port xxxxx] Got connection 1
Failed to set up socket for dynamic port forward to remote port 45000: Socket closed.
{
  "remote.SSH.enableDynamicForwarding": false,
  "remote.SSH.serverPickPortsFromRange": { "[ALIAS]": "45000-45150" }
}

いずれも改善せず、実用不可と判断しました。

4) 参考:SOCKS 単体テスト

ssh -vv -N -D 1080 [ALIAS]

SOCKS は待受開始を確認できましたが、Remote-SSH の最終接続は毎回 Socket closed で失敗しました。

【比較表】RS(共用)と VPS/EC2 の違い

項目 お名前.com RS(共用) VPS/EC2(専有)
glibc など 古めで要件未満になりやすい 新しめを選べる
kernel 3.10 系 4.18 以上が一般的
常駐プロセス 非推奨・非保証 自己責任で可
任意ポート待受 制限多め 柔軟に設定可
速度・安定 他ユーザーの影響 安定しやすい
権限 制約多い root 可
コスト 安価 やや高め
Remote-SSH 不可(本検証) 可(要件満たせば)
向き Web/メール+軽いバッチ 開発・常駐系

【代替運用】RS を使い続ける場合

A) VS Code はローカル、SFTP 同期(推奨)

VS Code の SFTP 拡張を使い、保存時に自動アップロードします。

実行系の操作は SSH ターミナルで行います。

{
  "name": "[ALIAS]",
  "protocol": "sftp",
  "host": "[HOST].onamae.ne.jp",
  "port": 8022,
  "username": "[USER]",
  "privateKeyPath": "~/.ssh/[KEYFILE].pem",
  "remotePath": "/home/[USER]",
  "uploadOnSave": true,
  "ignore": ["**/.git/**", "**/__pycache__/**", "**/.vscode/**"]
}

B) VPS/EC2 に移行して Remote-SSH

glibc ≥ 2.28 / kernel ≥ 4.18 を満たす OS(例:Ubuntu 22.04 / Debian 12)を選択します。

必要に応じて sshd のフォワーディング許可も確認します。

AllowTcpForwarding yes
AllowStreamLocalForwarding yes

【運用のコツ・つまずき】

鍵と権限の基本

秘密鍵は chmod 600 を徹底し、ssh-agentUseKeychain を併用して利便性を確保します。

UNIXソケットよりTCPに切替

共用では UNIX ソケット権限で落ちやすいため、Remote-SSH はソケット待受を無効化し TCP へ切替えます。

{
  "remote.SSH.remoteServerListenOnSocket": false
}

ポート帯域は固定指定でも過信しない

レンジ指定でもダイナミックフォワーディングが切断される場合があります。深追いせず SFTP+端末 SSH に切替えます。

共用環境の作法を守る

任意ポート常時待受や常駐デーモン(VS Code Server 等)は原則非推奨・非保証です。

SFTP 同期時のバックアップと除外

自動同期は別フォルダ出力を基本にし、Git を併用して巻き戻し可能性を確保します。大容量・不要ディレクトリは除外してください。

"ignore": ["**/.git/**", "**/__pycache__/**", "**/.vscode/**", "**/node_modules/**", "**/dist/**"]

【FAQ】よくある質問

glibc をユーザー権限で差し替えれば動きますか?

依存が広く、共用では現実的ではありません。専有環境(VPS/EC2)で OS ごと要件を満たすのが推奨です。

古い VS Code ならいけますか?

旧版は起動しても、最終フォワーディングが毎回切断(Socket closed)。実用に至りませんでした。

設定で回避できませんか?

以下の設定は効果が限定的で、根本解決には至りませんでした。

{
  "remote.SSH.remoteServerListenOnSocket": false,
  "remote.SSH.enableDynamicForwarding": false,
  "remote.SSH.serverPickPortsFromRange": { "[ALIAS]": "45000-45150" }
}

どうしても Remote-SSH を使いたいのですが?

glibc ≥ 2.28 / kernel ≥ 4.18 の OS(例:Ubuntu 22.04 / Debian 12)を持つ VPS/EC2 へ移行し、sshd のフォワーディング許可も確認してください。

AllowTcpForwarding yes
AllowStreamLocalForwarding yes

SFTP 同期の負荷やラグはどの程度ですか?

uploadOnSaveignore の調整で大きく改善します。巨大ディレクトリは対象外にし、差分アップロード設定を活用してください。

Code Server(ブラウザ版)なら実現できますか?

常時待受・常駐が必要のため、共用では非推奨・非保証に抵触する可能性が高いです。

まとめ

  • SSH/SFTP は OK、Remote-SSH は NG。
  • 理由:glibc 要件未満+最終段フォワーディング不成立。
  • 現実解:SFTP 同期+端末 SSHに切替、または VPS/EC2 へ移行。
  • RS は Web/メール+軽いバッチに留め、開発の主戦場は専有環境へ。

本記事のコードは [HOST]/[USER]/[KEYFILE]/[ALIAS] を実環境の値に置換してご利用ください。