「設定を始める前に、そもそも SSH って何に使うの?という方へ。
SSH(Secure Shell)は、自分のPCを 「リモコン」 にして、大学にある別のPC(サーバー)を操作するための仕組みです。
SSHの「S」は Secure(安全) のSです。 インターネットという公共の場所を通って大学のPCに繋ぐので、途中で悪い人に文字を読み取られないように、強力な 「透明な装甲付きトンネル」 を作ってその中を通ります。

「パスワードを入力するのと何が違うの?」という疑問を持つ方も多いはずです。ここでは、公開鍵認証の仕組みを解説します。
特徴 | パスワード認証 | 公開鍵認証 |
本人確認の方法 | 「合言葉」を覚える(知識) | 「自分専用の鍵」を持つ(所持) |
安全性 | 推測されたり盗まれたりしやすい | 数学的に強力で、推測は不可能 |
利便性 | 毎回入力が必要で面倒 | 一度設定すれば入力不要(自動化) |
公開鍵認証では、必ずペアになる2つのファイルを作成します。
ログインするとき、サーバーは「君は本当に本人?」とテストを出します。あなたのPCが手元にある「秘密鍵」を使ってサッと回答することで、**「鍵を物理的に持っている=本人である」**と証明されます。

次に、接続に使う「鍵」を作ります。SSHでは以下の2つがペアで作成されます。
id_ed25519.pub): 「ロック(南京錠)」のようなもの。サーバー側に預けます。id_ed25519): 「マスターキー」そのもの。自分のPCに大切に保管します。Negative : 秘密鍵は絶対に他人に渡してはいけません! メールで送ったり、GitHubに公開したりしないよう厳重に管理してください。
ターミナル(Macなら「ターミナル」、Windowsなら「PowerShell」)を開き、以下のコマンドを入力してください。
ssh-keygen -t ed25519
実行するといくつか質問されますが、すべてそのまま Enter キーを押して進めてOK です:
.ssh フォルダに保存。上書き確認が出た場合は注意してください)。これで、あなたのPCの ~/.ssh/ という隠しフォルダの中に鍵のペアが作成されました。
作成したペアのうち、「公開鍵(ロック)」 を大学の玄関サーバー(SSH Gate)に設置します。これにより、あなたのPC(秘密鍵)を持っている人だけがログインを許可されるようになります。
以下のコマンドを実行して、公開鍵の内容をクリップボードにコピーしてください。
cat ~/.ssh/id_ed25519.pub | pbcopy
Get-Content $HOME\.ssh\id_ed25519.pub | Set-Clipboard
「これからこの鍵でアクセスするよ!」と大学のサーバーに伝えます。以下のコマンドを実行してください。
(
s13xxxxx
の部分は、自分の学籍番号に置き換えてください)
ssh-copy-id -i ~/.ssh/id_ed25519.pub s13xxxxx@sshgate.u-aizu.ac.jp
※途中でパスワードを聞かれたら、AINSパスワードを入力してください。成功すれば、次からはパスワードなしで接続できるようになります。
大学の演習用サーバー(linsv)は、セキュリティのためインターネットから直接アクセスできません。必ず sshgate(玄関) を通る必要があります。
通常は PC -> (ssh) -> sshgate -> (ssh) -> linsv と2回コマンドを打つ必要がありますが、SSH Config という設定ファイルを作ることで、1回のコマンドで自動的にこの「中継」を行えるようになります。
大学のサーバーに接続する際の「公式なルート」を図解すると以下のようになります。

Negative : sshgate では作業しないこと! sshgate は学外から学内ネットワークに入るための「玄関(踏み台)」にすぎません。ここでプログラミングや課題などの重い作業を行うと、サーバーに負荷がかかり、他の人の接続を妨げる原因となります。必ず aizu-env(linsv)まで接続した状態で作業を行ってください。
まずは設定ファイルを開きましょう。
nano ~/.ssh/confignotepad $HOME\.ssh\config開いたファイルに、以下の内容をコピー&ペーストしてください。(s13xxxxx は書き換えてください!)
# 大学の玄関(中継地点)
Host aizu-sshgate
HostName sshgate.u-aizu.ac.jp
User s13xxxxx
# 演習環境への本番接続
# aizu-sshgate を自動で中継(ProxyJump)します
Host aizu-env
HostName linsv.u-aizu.ac.jp
User s13xxxxx
ProxyJump aizu-sshgate
ファイルを保存して閉じたら準備完了です!
いよいよ接続です。
ターミナルで以下の1行を打つだけです。
ssh aizu-env
Positive : もし最初の接続で Are you sure you want to continue connecting? と聞かれたら、自信を持って yes と入力して Enter を押してください。
コマンドラインが [s13xxxxx@linsv ~]$ のように変われば、そこはもう大学のサーバーの中です! 終了するときは exit と打てば自分のPCに戻ります。
エンジニアの多くは VSCode を使ってリモート作業をします。
aizu-env が表示されるので、それを選びます。お疲れ様でした!これであなたの開発環境は爆速になりました。