「設定を始める前に、そもそも SSH って何に使うの?という方へ。

離れた場所にあるPCを動かす「リモコン」

SSH(Secure Shell)は、自分のPCを 「リモコン」 にして、大学にある別のPC(サーバー)を操作するための仕組みです。

なぜSSHが必要なの?

  1. みんなと同じ開発環境(linsv)が使える: プログラミングの課題などは、個人のPCではなく、大学が用意した共通の環境(linsv)で行う必要があります。そこにアクセスするためにSSHを使います。
  2. プロのエンジニアの標準装備: Webサイトを作ったりサーバーを管理したりするエンジニアは、毎日当たり前のようにSSHを使います。今のうちに慣れておくと、将来の仕事でも役立ちます。

なぜ「Secure(安全)」なの?

SSHの「S」は Secure(安全) のSです。 インターネットという公共の場所を通って大学のPCに繋ぐので、途中で悪い人に文字を読み取られないように、強力な 「透明な装甲付きトンネル」 を作ってその中を通ります。

SSHのイメージ

「パスワードを入力するのと何が違うの?」という疑問を持つ方も多いはずです。ここでは、公開鍵認証の仕組みを解説します。

パスワード認証 vs 公開鍵認証

特徴

パスワード認証

公開鍵認証

本人確認の方法

「合言葉」を覚える(知識)

「自分専用の鍵」を持つ(所持)

安全性

推測されたり盗まれたりしやすい

数学的に強力で、推測は不可能

利便性

毎回入力が必要で面倒

一度設定すれば入力不要(自動化)

「南京錠」と「マスターキー」で例えると

公開鍵認証では、必ずペアになる2つのファイルを作成します。

  1. 公開鍵(南京錠 / ロック): 大学のサーバーに預けるファイルです。誰に見られても、盗まれても大丈夫な設計になっています。
  2. 秘密鍵(マスターキー): 自分のPCに大切に保存しておくファイルです。これを持っている人だけが、世界中のどこにある「公開鍵」のロックも開けることができます。

接続の流れ(裏側で起きていること)

ログインするとき、サーバーは「君は本当に本人?」とテストを出します。あなたのPCが手元にある「秘密鍵」を使ってサッと回答することで、**「鍵を物理的に持っている=本人である」**と証明されます。

公開鍵認証の仕組み

次に、接続に使う「鍵」を作ります。SSHでは以下の2つがペアで作成されます。

Negative : 秘密鍵は絶対に他人に渡してはいけません! メールで送ったり、GitHubに公開したりしないよう厳重に管理してください。

鍵を作る手順

ターミナル(Macなら「ターミナル」、Windowsなら「PowerShell」)を開き、以下のコマンドを入力してください。

ssh-keygen -t ed25519

実行するといくつか質問されますが、すべてそのまま Enter キーを押して進めてOK です:

  1. 保存場所: そのまま Enter(標準の .ssh フォルダに保存。上書き確認が出た場合は注意してください)。
  2. パスフレーズ: 鍵自体にパスワードをかけるかどうかです。とりあえず空(そのまま Enter)でも構いません。

これで、あなたのPCの ~/.ssh/ という隠しフォルダの中に鍵のペアが作成されました。

作成したペアのうち、「公開鍵(ロック)」 を大学の玄関サーバー(SSH Gate)に設置します。これにより、あなたのPC(秘密鍵)を持っている人だけがログインを許可されるようになります。

1. 公開鍵の中身をコピーする

以下のコマンドを実行して、公開鍵の内容をクリップボードにコピーしてください。

2. サーバーに登録する

「これからこの鍵でアクセスするよ!」と大学のサーバーに伝えます。以下のコマンドを実行してください。

(

s13xxxxx

の部分は、自分の学籍番号に置き換えてください)

ssh-copy-id -i ~/.ssh/id_ed25519.pub s13xxxxx@sshgate.u-aizu.ac.jp

※途中でパスワードを聞かれたら、AINSパスワードを入力してください。成功すれば、次からはパスワードなしで接続できるようになります。

踏み台サーバー(Jump Host)という概念

大学の演習用サーバー(linsv)は、セキュリティのためインターネットから直接アクセスできません。必ず sshgate(玄関) を通る必要があります。

通常は PC -> (ssh) -> sshgate -> (ssh) -> linsv と2回コマンドを打つ必要がありますが、SSH Config という設定ファイルを作ることで、1回のコマンドで自動的にこの「中継」を行えるようになります。

接続の図解

大学のサーバーに接続する際の「公式なルート」を図解すると以下のようになります。

踏み台サーバー経由の接続図

Negative : sshgate では作業しないこと! sshgate は学外から学内ネットワークに入るための「玄関(踏み台)」にすぎません。ここでプログラミングや課題などの重い作業を行うと、サーバーに負荷がかかり、他の人の接続を妨げる原因となります。必ず aizu-env(linsv)まで接続した状態で作業を行ってください。

設定ファイルを作成する

まずは設定ファイルを開きましょう。

開いたファイルに、以下の内容をコピー&ペーストしてください。(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から接続する(おすすめ!)

エンジニアの多くは VSCode を使ってリモート作業をします。

  1. VSCode の拡張機能 「Remote - SSH」 をインストールします。
  2. 左下の青いアイコン(リモート接続)をクリックし、「Connect to Host...」 を選択。
  3. リストに先ほど設定した aizu-env が表示されるので、それを選びます。
  4. 新しいウィンドウが立ち上がり、大学サーバー上のファイルを自分のPCの中にあるかのように編集できるようになります。

お疲れ様でした!これであなたの開発環境は爆速になりました。