Windowsからアクセスするスパコンでの作業環境整備

Windows 11 からスパコンにアクセスして作業するための環境整備の備忘録です．九州大学スパコン玄界（[GENKAI](https://www.cc.kyushu-u.ac.jp/scp/)）を例としますが，東京大学スパコン [WISTERIA](https://www.cc.u-tokyo.ac.jp/supercomputer/wisteria/service/) でも同様です．また，GitHubへの接続はWSLのUbuntuでも同様です．Windowsから [MobaXterm](https://mobaxterm.mobatek.net/) を用いてスパコンにアクセスできることを前提とします．スパコンへのアクセス方法の詳細例は[こちら](https://www.cc.kyushu-u.ac.jp/scp/system/Genkai/howto/)を参照ください．

## SSH接続（VScodeとssh port forwardingで必要）

Windows command promptを開き，`C:\Users\<username>\.ssh\` においてssh-keygenで秘密鍵と公開鍵のペアを作成します．これはMobaXtermで作成したppk形式の鍵とは別で，VScodeで必要になります．公開鍵はスパコンに登録します．
```
ssh-keygen
```
デフォルトのファイル名で作成します（Enterを押すだけです）．以前は，秘密鍵 id_rsa と公開鍵 id_rsa.pub が作成されていましたが，2025年2月25日に作成したところ，番号付きのファイル名に変わっていました．昔のid_rsaのファイル名に変更して作成し，登録しても接続できませんでした．OpenSSHのデフォルトの鍵形式が変更されたようです．
VScodeで必要になるので，同じフォルダにファイル名 **config** で以下のような内容のファイル作成します．以下の **VScode** でさらに説明します．
```
Host GENKAI
  HostName <スパコン接続url>
  User <ユーザ名>
  IdentityFile C:\Users\<username>\.ssh\<秘密鍵名>
```

一方，ppk形式の鍵を変換して用いることもできるようです．[puttygen](https://www.puttygen.com/)を起動し，`Conversions`メニュー → `Import key` でppk形式の鍵を入力して読み込みます．passphraseを求められますので，入力します．すると一番上のKeyボックスに公開鍵が現れます．この公開鍵をUser Portalに登録します．しかし，VScodeを使用する場合は上記のssh-keygenで秘密鍵と公開鍵を作成する方法が簡単です．

次に，ssh port forwardingで必要になる（かもしれない），WSL2のUbuntuでもキーペアを作成します．Ubuntuのターミナルを開き，以下の通り作成します．鍵ファイルの保存先はEnterで指定すると，デフォルトでは`~/.ssh/id_rsa`に保存されます．次にパスフレーズを聞かれますので設定します．
```
cd ~/.ssh
ssh-keygen -t rsa -b 4096
```
作成された公開鍵 `~/.ssh/id_rsa.pub` をスパコンに登録します．既にスパコンに接続できるので，`~/.ssh/authorized_keys` を開き，下端に公開鍵の内容をコピペするのが簡単です．

## VScode

Windows版の[VScode](https://code.visualstudio.com/)でスパコン上のファイルを編集できるようにします．VScodeの拡張機能に **Remote Development** をインストールします．[こちらの記事](https://qiita.com/katakyo/items/144a25dccc743d0767e9)が参考になります．

#### configの編集
既述の通り，`C:\Users\<username>\.ssh\config` を以下のように編集（追記）します．

```bash
Host GENKAI
    HostName <スパコン接続URL>
    User <ユーザ名>
    IdentityFile C:\Users\<username>\.ssh\<秘密鍵ファイル名>
```

**Host** はスパコン名を任意に付けます．**HostName** はスパコンの接続アドレスです．**User** の `<ユーザ名>` はスパコンのユーザ名（アカウント名）です．**IdentityFile** の `<秘密鍵ファイル名>` はスパコンに登録した公開鍵に対応する秘密鍵のファイルパスです．

#### VScodeでスパコンに接続
Vscodeを起動し，左端の **リモート エクスプローラー** アイコンをクリックすると，**GENKAI** が追加されているはずです．これにカーソルを合わせると，`新しいウィンドウで接続...`が現れます（`現在の...` が選択できるときはどちらか選択）．それをクリックし，Linuxを選択し，ターミナルでyesと入力することでスパコンに接続が完了します（passphraseの入力も求められます）．

VScodeの必要な拡張機能については，スパコンへのインストールの指示が現れるので，それらをインストールしておきます．

![vscode_genkai.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/341422/0f9fc49b-b347-15cb-cd39-017c3aa6d725.png)

## GitHub

GitHubのアカウントを持っていることを前提とします．スパコンまたはWSL Ubuntuにログインし，`~/.ssh/` に移動します（存在しない場合は作成します）．秘密鍵と公開鍵を作成します．`Enter file ...` でEnterを押すとデフォルト名になります．`Enter passphrase ...` にはpassphraseを入力します．
なお，以前の公開鍵はGitHubに登録不可でした．上述の通り，OpenSSHのデフォルトの鍵形式が変更されたためのようで，以下のように作成しなおすと登録できました．

```bash
$ cd ~/.ssh
$ ssh-keygen
```

秘密鍵id_ed\*\*\*\*\*と公開鍵id_ed\*\*\*\*\*.pubが作成されます（\*\*\*\*\*は番号です）．公開鍵をGitHubに登録します．GitHub右上のプルダウンボタンの **Settings** をクリックし，左メニューの **SSH and GPG keys** をクリックします．右上の **New SSH key** をクリックし，適当な名前を付け，公開鍵をコピペし，**Add SSH key** をクリックして登録します．

GitHubに接続できることを確認しましょう．
```bash
$ ssh -T git@github.com
Enter passphrase for key '/home/teem/.ssh/id_ed*****':
Hi <your-account>! You've successfully authenticated, but GitHub does not provide shell access.
```

初期設定を実行します．`use.email` と `user.name` にはそれぞれダブルクオーテーションで囲んだメールアドレスおよび名前を入力します．これで git clone ができるようになります．
```bash
$ git config --global user.email "you@example.com"
$ git config --global user.name "Your Name"
```

#### Permissionの注意
もし接続できない場合はPermissionが適切か確認しましょう．
~/.ssh ディレクトリのPermisionは **700** (`drwx------`)です．
秘密鍵ファイル（例: id_rsa）とauthorized_keys（存在する場合）は **600** (`-rw-------`)です．