この記事は
GitHub Codepaces 内にローカル環境から ssh する方法です。
特に難しいことはありませんが、2021/8/25 現在、公式ドキュメント https://docs.github.com/en/codespaces に具体的な説明が見当たらないようなのでメモしておきます。
手順
VS Code + Codespaces を起動する
ブラウザ内ではなく VS Code で起動します。

2222 を Add Port する
「PORTS」に 2222 が登録されていなければ、Add Port で 2222 を登録します。
パスワード設定 (必要なら)
GitHub に SSH 公開鍵が登録してあれば、その公開鍵が Codespace 内の ~/.ssh/authorized_keys に置かれます。
よって、対応した秘密鍵がローカル環境にあればこの鍵でログインできます。素晴らしい。
もし公開鍵がなければ、 Codespace 上でパスワードを登録してそれを使えば OK です。
$ sudo passed $(whoami)
ssh する
ローカル環境に port forward されているので
$ ssh -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null codespace@localhost
で ssh login できます。
オプション類は ~/.ssh/config
に書いておくと良いでしょう。
Host codespace
Hostname localhost
Port 2222
User codespace
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
これで
$ ssh codespace
だけで ssh できるようになります。
おまけ: 自前イメージで sshd を有効にする
標準の Codespaces 環境で sshd はこのあたりで設定しているようです。
.devcontainer を使った自前の環境で ssh を使いたい場合には参考にしてみてください。
&& bash /tmp/scripts/sshd-debian.sh \
ENTRYPOINT [ "/usr/local/share/docker-init.sh", "/usr/local/share/ssh-init.sh", "benv" ]
CMD [ "sleep", "infinity" ]
まとめ
- GitHub Codespaces 内にローカル環境から ssh する方法を説明しました。
- Codespaces の標準環境で sshd 設定している部分を紹介しました。自前のイメージを作るときの参考にどうぞ。