LoginSignup
1
0

More than 3 years have passed since last update.

(初心者)SSHやLinuxコマンド ssh-keygen がよくわからないのでまとめた

Last updated at Posted at 2020-02-09

入社1week目の個人的メモ。

ssh接続について

ssh-keygenコマンドは「OpenSSH」で使う公開鍵と秘密鍵や、CA鍵(Certificate Authority、認証局による鍵)を使った「証明書」と呼ばれるファイルを作成できます。

引用:https://www.atmarkit.co.jp/ait/articles/1908/02/news015.htmlhttps://www.atmarkit.co.jp/ait/articles/1908/02/news015.html

OpenSSH とは
ネットワーク経由通信を暗号化する「SSH」のオープンソース実装です。
おもにUNIX/Linuxサーバに対するネットワーク経由でのリモートログインに使用します。

SSH とは
「SSH(Secure Shell)」は、暗号や認証の技術を利用してセキュアにリモートコンピュータと通信するためのプロトコルです。
パスワードなどの認証情報を含む通信を暗号化します。

プロトコル とは
定められた、データ通信を行うための規約。情報フォーマット、交信手順。

引用:https://www.ossnews.jp/oss_info/OpenSSH

なぜssh接続が必要なのか

引用:https://www.kagoya.jp/howto/rentalserver/ssh/

VPS(バーチャル・プライベート・サーバー.)などの各種サーバー機器は、ほとんどの場合、操作をする人から離れた場所にあります。
そのため、この操作をする人だけが安全にインターネット経由で接続できる手段が必要になります。

なぜなら、万一悪意をもった人がサーバーにログインできてしまうと、サーバー内ではやりたい放題となり、さまざまなリスクの原因となるからです。

なおふだん使うSSHという用語には、以下のような複数の意味があるため、どれを指しているかを明確にする必要あり。

  1. SSHでサーバーにログインするための情報(ホスト名、パスワード、認証用ファイルなど)
  2. ソフトウェアとしてはサーバーとクライアントの両方ある
  3. WindowsなどのOSからは、専用のクライアントソフトを使って接続する

sshとsslの違い

  • SSH
    目的:サーバーへの接続
    主な対象者:サーバー管理者

  • SSL
    目的:Webサイトを安全に表示
    主な対象者:Webサイトの閲覧者

SSHの認証方法について

離れた場所にあるサーバーへ安全に接続するため、SSHは複雑にできている。
さらに、サーバーへのログインが適正かどうかチェックする認証方法は、複数用意されている。

代表的なものはパスワード認証方式公開鍵認証方式

  • パスワード認証方式 この場合のパスワードは、サーバーのユーザーアカウントに設定しているもの。 手軽だが、パスワードが流出すると、悪意をもった第三者からサーバーにログインされてしまう可能性があり、危険でもある。

※ 実際にはパスワードのみを単純に確認しているわけではなく、複雑な動きをしている。
詳しくは引用元参照。

  • 公開鍵認証方式 初期設定作業が大変だが、通信の安全性はとても高い方式。 方法はいくつかありますが、「鍵」と呼ばれるファイルをしっかり保管さえすれば、「鍵」のないユーザーからのログインは原則できません。 これにより、悪意をもった第三者からの不正なログインを防ぐことができます。

公開鍵認証方式は、ざっくり言うと以下のような流れ。

  1. 「鍵」作成(「鍵」は、SSHサーバーかSSHクライアントかどちらかで作成します。)
  2. サーバーとクライアントで必要な「鍵」をそれぞれ保管 「鍵」は1つではなく、必ずサーバー用(公開鍵)とクライアント用(秘密鍵)とをペアで作成します。
  3. SSHクライアントを操作し、SSHサーバーにログインしたい意思を伝える
  4. 相互に「鍵」を照合し、合っているか確認
  5. 通信の暗号化などの手続き(暗号化や復号化、それらをするための情報のやりとり)
  6. 暗号化された通信が開始

ssh-keygen コマンドとオプション

Linuxコマンド ssh-keygen

秘密鍵と公開鍵をのセットを発行するLinuxコマンド。
ファイル場所とデフォルトのファイル名は以下の通り。

秘密鍵:/root/.ssh/id_rsa
公開鍵:/root/.ssh/id_rsa.pub

自分の場合は~/.ssh/ディレクトリが存在しなかったので、mkdirで作成した。

手順書で出てきた以下のコマンドについて

手順書のコマンド
ssh-keygen -f stash_rsa -t rsa -b 2048

基本文法
ssh-keygen [オプション] [-f 鍵ファイル]
※[ ]は省略可能な引数

各種オプションの意味

引用元:https://www.atmarkit.co.jp/ait/articles/1503/20/news007.html

  • -f オプション
    ファイルを指定する。
    今回はstash_rsaという名前にしたかったので、使っていると思われる。
    (指定しないとid_rsaという名前で生成される。)

  • -t オプション
    鍵の種類 rsa1, dsa, ecdsa, ed25319, rsa (-tで指定しない場合はバージョンにもよるけど大抵rsaがデフォルト)

  • -b オプション
    鍵の長さを指定する(最低値は768bit、初期値は2048bit)
    上記コマンドでも2048bitが指定されている。
    (初期値が2048bitと引用元に書いてあるが、あえて指定している理由は不明)

秘密鍵と公開鍵を生成した後の設定

疲れたので後日記載しよう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0