【入門 SSH プロトコル】コマンドでの接続方法やconfigの設定

SSH(Secure SHell)プロトコルSSH プロトコルとは、リモートホストを遠隔操作するためのプロトコル(ルール)です。
通信経路が暗号化されていることからセキュアという名前がついています。
スポンサーリンク

SSH の仕組み

SSH は以下のように「暗号化」と「認証」を行います。

それぞれの「公開鍵」や「共通鍵」や「電子署名」の説明については以下の記事をご覧ください

以降では上記の手順について順番に説明を行います。

ssh コマンド

以下の一番最初にある「ssh コマンド」について説明します。

サーバーに接続する ssh コマンドは「ssh <ユーザー名>@ -i <秘密鍵のパス>」です。

具体的な値を入れると以下のとおりです。

ssh hoge-user@192.0.2.1 -i ~/.ssh/id_rsa

サーバーから公開鍵を受け取る

以下のサーバーからクライアントに「公開鍵Bをあげる」にあたります。

  1. サーバーは、公開鍵B(/etc/ssh/ssh_host_ecdsa_key.pub )をクライアントに渡す
  2. クライアントは、受け取った公開鍵Bを ~/.ssh/known_hosts で照合
  3. ~/.ssh/known_hosts に無い場合は、初めてアクセスするサーバーなので確認画面を出す

確認画面は以下のとおりです。

The authenticity of host '192.0.2.1 (192.0.2.1)' can't be established.
ECDSA key fingerprint is SHA256:123456789abcdefgh.
Are you sure you want to continue connecting (yes/no)?

ホスト名」と「公開鍵のハッシュ値(フィンガープリントと呼びます)」を表示して、「本当に正しいアクセス先か?」をユーザーに確認します。

「yes」を入力すると、~/.ssh/known_hosts に追記し共通鍵を生成後、認証フェーズに入ります。

共通鍵の詳細については以下の記事をご覧ください。

ssh フィンガープリントの確認

サーバー側で以下のコマンドを実行すると、サーバーから送られてくる公開鍵Bのフィンガープリントを確認可能です。

ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
256 SHA256:123456789abcdefgh

クライアント側でも、known_hosts に登録されている公開鍵のフィンガープリントを確認可能です。

ssh-keygen -lf ~/.ssh/known_hosts
256 SHA256:123456789abcdefgh 192.0.2.1 (ECDSA)

電子署名による認証

以下のクライアントが「電子署名をあげる」を実施し、「authorized_keys に公開鍵Aがあるかチェックする」部分にあたります。

  1. サーバーは電子署名が公開鍵Aで復号化できることから、クライアントが秘密鍵Aを持つ人とわかる
  2. 電子署名に含まれる公開鍵Aが ~/.ssh/authorized_keys にあるかどうかを確認
  • ~/.ssh/authorized_keys に公開鍵Aがあれば、承認済みの人なので許可
  • ~/.ssh/authorized_keys に公開鍵Aがなければ、承認してない人なので拒否

拒否されると以下のメッセージが表示され、ssh に失敗します。

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

そのため、以下のコマンドで ~/.ssh/authorized_keys にクライアントの公開鍵を登録する必要があります。

cat ~/.ssh/id_rsa.pub | ssh hoge_user@192.0.2.1 'cat >> .ssh/authorized_keys'

電子署名の詳細については以下の記事に記載があります。

上記は conf.d/* 配下の設定ファイルを全て取り込みます。

スポンサーリンク

参考サイト

SSH2のログインシーケンス クライアント サーバ TCP/22接続 (TTSSH) (OpenSSH) バージョン情報交換 - ppt download
SSH2のログインシーケンス(続き) クライアント サーバ (TTSSH) (OpenSSH) 認証リストの要求 “none”メソッド SSH2_MSG_USERAUTH_REQUEST CheckAuthListFirstが有効なとき (無効なときは、クライアントはユーザ操作による認証失敗により認証リストを得られる)...
SSHの公開鍵認証に関する誤謬と実際 - Chienomi
SSHの公開鍵認証における良くある誤解の話 - Qiita
はじめに背景これを知っていたからと言って何かの役に立つかというと、そうでない人の方が多いとは思うのですが、いい加減、SSHの公開鍵認証の説明がデマばかりなので、少しはちゃんとした説明もあった方が…