本記事はSSHのSecureの部分には一切触れません!
過去自分自身がリモート接続やCLIを感覚的に理解していなかったため、反省して言語化してみたよ!という記事です。
当時の私と同じようにSSHやCLIに苦手意識を持っている方の理解の助けになれたら嬉しいです。
初学者の頃にわからないながらにSSH・telnetのハンズオンを行い、接続後に表示される画面を 「SSHの画面」 という、曖昧な言葉で表現していました。
なぜならSSHで接続した先の画面だから!
当時の私は、SSHとは何か特別で、SSHでしか辿り着けない場所(?)があるような感覚を持っていたかもしれません。
しかし上司に説明する際に「今、SSHの画面を見てます!」と伝えても何も伝わりません。ブチギレられます。
当時を振り返り、不足していた感覚を言語化してみようと思います。
何を解決する技術なのか?から考えよう
SSHとはネットで繋がった機器にリモート接続するためのプロトコル(http的なやつ)です。
リモート接続とは何を解決する技術なのでしょうか?言葉の定義から深掘りましょう。
まず「リモート」という言葉の意味
このリモートという言葉、どなたのご家庭にもあるあるものの名称に含まれています。
うちの3歳の娘でもものの名前となんとなくの使い方を知っています。
それはなんでしょうか?
そう、リモコン(リモートコントローラー) です!

リモコンとはリモート(遠隔)コントロール(操作)するための装置です。
日常に溶け込みすぎていて無意識に使っているかもしれませんが、リモコンがない状態だと機器本体(テレビやエアコン)のコントロールパネルで操作しなくてはいけません。
つまり、「機器本体まで移動・接近せずとも操作できる」 という物理的な問題を解決しています。
すごいぜリモコン!

では「リモート接続」とはなんなのか
例えば、お母さんに電話で指示しながらコンピューターを操作してもらうとしましょう!
これもある意味では(本人の)物理的な問題を解決した操作方法といえるのではないでしょうか?
ここでは便宜上、 OTCP(Okan Telephone Controll Protocol) とでも名付けましょう。

現代社会においてOTCP(Okan Telephone Controll Protocol)の使用は推奨されておりません。
お母さんを大切にしましょう。
しかしできれば自分で操作したい!
離れた場所にあるコンピューターにネット通信を介して機器に接続することをリモート接続といいます。(前提として対象のコンピューターは通信ネットに接続されています)
そしてリモート接続により直接操作できるようになります。
どのように操作するのか?
SSHではCLIによる操作を行います。
コンピューターの操作にはCLI(Command Line Interface)とGUI(Graphical User Interface) があります。おおまかに、文字・コマンドベースでの操作か?アイコンなどクリックして視覚的・直感的に操作できるものか?の違いです。
-
まずお馴染みGUIで理解
スマホの画面なんかもGUIですね。
遠隔でGUIの操作を行うには RDP(Remote Desktop Protocol) を使用します。
オフィスワークをしたことがある方なら在宅勤務などで使用した経験があるのではないでしょうか?直感で自分がいつも接続しているPCに自宅から接続できている!と感じたことかと思います。
特定のコンピューターにリモート接続し、操作している感覚が理解できると思います。 -
ではCLIは?
基本的にはCLIもGUIも同じことをやっています。
ほとんどの業務用のサーバーや機器などは負荷の軽減のためGUIをもっていません(または無効な状態)。
当時の私はサーバーやシステムというものに過剰な妄想を抱き、さらに慣れないCLIでの操作でなにかすごいことができる・難しいことをしているという気になっていました。
確かにCLIのほうが柔軟で細かな操作が可能ですが、当然のことながら、そのコンピューターにできることしかできません。
個人的にはCLIへの過剰な特別感は理解を邪魔すると思います。
GUIでの〇〇のように置き換えたほうが理解が早い気がします。

つまりSSH(リモート接続)ってなんなの
- 遠くから直接操作できるよ!
- 方法はCLIだよ!
- CLIは特別じゃないよ!
じゃあ「SSHの画面」ではなく、何て呼べばいいの?
〇〇(機器・端末名)のCLI や SSHで〇〇(機器・端末名)に接続している という表現をしましょう。
もちろん文脈的にSSHの画面で十分伝わる場面も多いと思います。しかし、自分が今どの機器・端末の操作を行っているのか?と自覚することは非常に重要です。
本来自分が今どこに接続できているのか?を理解できるように解説する記事にしたかったのですが、まとめるのに時間がかかりすぎたので一旦ここで投稿します。
最後までお読みいただきありがとうございました。
あとがき:概念すぎたかもしれない。