はじめに
このシリーズでは、文系出身未経験入社の開発エンジニア2年目の自分が、
なんとなく分からずにモヤモヤしていた知識や疑問をざっくりと解説していきます。
ざっくりとなので、多少正確性を欠くことがありますが、もし誤った記載がありましたらご指摘いただけますと幸いです。
SSH接続とは
あるコンピュータから別のコンピュータに安全に接続し、遠隔操作を行うための技術。
導入方法は以下の通りです。
コンピュータAからコンピュータBにSSH接続する流れ
①コンピュータBをインターネットに接続する。
②コンピュータBにSSHサーバーアプリをインストールし、他コンピュータからのSSH接続を許可する設定を行う。
③コンピュータAでSSH接続用の公開鍵と秘密鍵のペアを作成する。
④作成した公開鍵をコンピュータBに配置する(これでパソコンAから接続できるようになる)。
⑤コンピュータAに秘密鍵の情報を置いて、パソコンBにSSH接続する。
※公開鍵・秘密鍵をどこのディレクトリに置くかは、SSHサーバーがどのディレクトリを参照するかによる。
大体はデフォルトで以下を参照している。
公開鍵
~/.ssh/authorized_keys
秘密鍵
~/.ssh/id_rsa
~はホームディレクトリの意。
なぜ接続先に公開鍵/接続元に秘密鍵を置くのか?
当たり前ですが、接続先(開放しているコンピュータ)に秘密鍵を置いてしまうと、
接続したコンピュータの利用者全員に秘密鍵が知られてしまうため、意味がなくなってしまいます。
接続先コンピュータの公開鍵・接続元コンピュータの秘密鍵で、
「このコンピュータはSSH接続してOKだよ~」という認証が完了したら、
あとは通信内容を共通鍵で暗号・復号しながらやり取りを行います。
「この共通鍵が漏れてしまったら通信が傍受されちゃわない?」
と思うかもしれませんが、
共通鍵はセッションごとに生成・破棄されるため、
万が一漏れてしまっても、次のセッションでは安全に通信を行うことができます。
補足:主なSSHサーバーアプリ
OpenSSH - 最も広く使用されているオープンソースのSSHサーバー。
Dropbear - 軽量なSSHサーバー、主に組み込みシステム向け。
Bitvise SSH Server - Windows向けの商用SSHサーバー。
Windows OpenSSH - Windows 10以降に組み込まれたOpenSSHサーバー。
TeraTerm - 主にクライアントとして有名だが、サーバー機能も提供。