申請なし・無料で使える九大プログラミング学習サーバについて

九州大学は、プログラミング学習用に教職員と学生に「ps server」というサーバを提供しています。九州大学の学生なら誰でも特別な申請を行うことなく無料で使用することができます。この記事では、SSHを使用してサーバにログインし、その機能を使う方法を解説します。

:::note warn
注意
筆者は2025年3月に九州大学を卒業しました。本記事の内容は現在の ps server の運用状況と異なる可能性があります。
:::

# 前提条件

自分のコンピュータに、SSHクライアントがインストールされている必要があります。Windowsユーザは次の記事を参考にSSHクライアントをインストールすることができます。

- [OpenSSH をインストールする | Microsoft Learn](https://learn.microsoft.com/ja-jp/windows-server/administration/openssh/openssh_install_firstuse)

# 利用制限

1. 九州大学の構成員ではなくなった後は、ホームディレクトリが削除されます
1. 平文での通信 (telnet, ftp, http) は行うことができません
1. ログイン後は他のコンピュータと一切通信することができません

詳細は、九州大学 教育情報サービスの[プログラミング学習サーバー「ps」](https://ecs.kyushu-u.ac.jp/ps.html)のページをご覧ください。なお、本記事の内容について大学に問い合わせることはご遠慮ください

# 接続方法

ターミナルを開いて、次のコマンドを入力します。`me@local:~$`までの部分はプロンプトで、人によって表示が異なります。

```shell
me@local:~$ ssh <SSO-KID>@ps.s.kyushu-u.ac.jp
```

`<SSO-KID>`の部分は、自身のSSO-KIDに置き換えてください。例えば、SSO-KIDが`4855425311`の九大生は次のようにしてサーバに接続します。

```shell
me@local:~$ ssh 4855425311@ps.s.kyushu-u.ac.jp
```

パスワードはSSO-KIDを設定したときに自分が決めたものです。入力するときセキュリティ上の理由からターミナルには何も現れず入力されていないように見えますが、コンピュータはきちんと認識しています。

パスワードを入力してログインに成功すると、次のような画面が表示されるはずです。
![Screenshot from 2023-09-16 17-55-50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2394550/50172ca2-c386-28d4-5760-ed27c51fee6f.png)

ターミナルのプロンプトが`[<SSO-KID>@ps ~]$`のように代わり、接続できていることがわかります。

接続を終了するときは、コマンド`exit`を入力して終了します。

# 使用例

## scpでファイルを転送する

`scp` (secure copy) は、`cp`コマンドでファイルをコピーするようにサーバから、あるいはサーバへファイルをコピーすることができます。練習として、ps serverの過去のお知らせファイル (`/local/NEWS`) を自身のPCへコピーしてみましょう。まだps serverに接続したままの場合は`exit`と入力して接続を終了し、ターミナルで次のように入力します。

```shell
me@local:~$ scp <SSO-KID>@ps.s.kyushu-u.ac.jp:/local/NEWS .
```

`scp`では、`cp`と違いホスト名を指定し、コロン (`:`) で区切った後、ファイルを指定します。これで、自身のPCに`~/NEWS`が作成されます。

逆に自身のPC上にあるファイルをサーバ上に転送する、例えばホームディレクトリ上にある`document.txt`というファイルを転送するには次のように入力します。

```shell
me@local:~$ scp document.txt <SSO-KID>@ps.s.kyushu-u.ac.jp:document.txt
```

## Vimでターミナルからテキストファイルを作成・編集する

Vimとは、ターミナル上で操作ができるテキストエディタです。Vimを使用することで、遠隔にあるファイルを直接ターミナル上で編集することができます。

新しいファイル (`file.txt`) を作成するためにVimを起動するには、サーバ上で次のようなコマンドを入力します。

```
[<SSO-KID>@ps ~]$ vim file.txt
```

起動できたら、`i`コマンドを入力して文字を挿入することができます。

ファイルを保存してVimを終了するには、`:wq`コマンドを使用します。

詳細は、[Vim日本語ドキュメント](https://vim-jp.org/vimdoc-ja/index.html)をご覧ください。なお、ps serverは他にemacsもサポートしています。

## TeXで文書を作成する

ps serverには$\TeX$がインストールされているので、サーバ上で$\TeX$ ($\LaTeX$) を練習することができます。サーバ上に`document.tex`という名前のファイルを作成し、次のようなコードを書きます。

```tex:document.tex
\documentclass{jlreq}
\begin{document}
一般に、ラグランジュの運動方程式は次のように表される。
\begin{equation}
    \frac{d}{dt}\left(\frac{\partial L}{\partial \dot{q_j}}\right)
    - \frac{\partial L}{\partial q_j} = Q_{j}^{nc}, \quad j = 1, \ldots, n
\end{equation}
\end{document}
```

これをコンパイルしてPDF文書を作成するには、サーバにログインして次のようなコマンドを入力します。ここでは、例として`lualatex`を使用しています。

```
[<SSO-KID>@ps ~]$ lualatex document.tex
```

プログラムが正常に実行されると、同じディレクトリに`document.pdf`が作成されているはずです。

## Visual Studio CodeからSSHでログインする

Visual Studio Code は Remote - SSHという拡張機能でSSHをサポートしているので、まるでローカルのファイルを扱っているかのようにサーバに接続してファイルを編集・実行することができます。詳細は[Connect over SSH with Visual Studio Code](https://code.visualstudio.com/docs/remote/ssh-tutorial)をご覧ください。

# 参考

- [Linux Command Line Books by William Shotts](http://linuxcommand.org/tlcl.php)