Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】SSH Key Authentication in Linux

2025年09月16日に「Dev.to」が公開したITニュース「SSH Key Authentication in Linux」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Linuxサーバーへの接続は、パスワード認証より安全なSSH鍵認証が推奨される。これは秘密鍵と公開鍵のペアを使い、パスワード不要で素早く安全にログインする仕組みだ。鍵の生成からサーバーへの設定手順まで解説し、システム運用におけるセキュリティ向上に貢献する。

出典: SSH Key Authentication in Linux | Dev.to公開日:

ITニュース解説

多くの人がインターネットを通じてサーバーに接続する際、通常はユーザー名とパスワードを使って認証を行う。しかし、「123」や自分の名前といった単純なパスワードは非常に危険であり、セキュリティ上の大きな弱点となる。セキュリティテストで利用される「SecLists」のようなプロジェクトが示すように、一般的なパスワードやユーザー名のリストは、不正アクセスを試みる者が行うブルートフォース攻撃(総当たり攻撃)に利用されやすい。このような攻撃では、パスワードを片っ端から試すことで、いずれは正しいパスワードを見つけ出してしまう可能性があるのだ。

そこで、より安全な認証方法として推奨されるのがSSH鍵認証である。SSH鍵認証を利用すれば、複雑なパスワードを覚える必要がなく、かつ安全な接続を確立できる。これは、セキュリティを重視するシステムエンジニアにとって必須の知識と言える。

SSH鍵認証は、秘密鍵(プライベートキー)と公開鍵(パブリックキー)という2つの鍵のペアを用いる。プライベートキーは文字通り「秘密」にすべき鍵で、他の誰にも知られないように厳重に管理しなければならない。自分のパソコンの安全な場所に保管するのが基本だ。一方、パブリックキーは「公開」しても問題ない鍵で、リモートサーバーなど、自分が接続したい相手に渡すことができる。この2つの鍵は密接に連携しているが、パブリックキーからプライベートキーを推測することはできない仕組みになっている。

SSH鍵認証の仕組みは次のようになる。まず、あなたのパソコン(ローカルマシン)でSSH鍵のペアを作成し、その中のパブリックキーを、接続したいリモートサーバーに登録する。あなたがリモートサーバーへログインしようとすると、リモートサーバーはランダムな文字列(例えば「8&vw^afdsE...」のようなもの)を生成し、これを登録済みのあなたのパブリックキーを使って暗号化する。この暗号化された文字列は、あなたのプライベートキーでしか復号できない。リモートサーバーは、この暗号化された文字列をあなたのローカルマシンに送り返す。あなたのローカルマシンは、自身のプライベートキーを使ってこの文字列を復号し、その結果をリモートサーバーに送り返す。リモートサーバーは、送られてきた復号結果が最初に生成したランダムな文字列と一致するかどうかを確認する。一致すれば、あなたのローカルマシンが正しいプライベートキーを持っていると判断し、認証が成功してログインが許可されるという流れだ。これにより、パスワードをネットワーク上に流すことなく安全な認証が可能になる。

実際にSSH鍵を作成するには、あなたのローカルマシンでssh-keygenというコマンドを使う。このコマンドはSSH認証用の鍵を生成、管理、変換するためのツールだ。例えば、ssh-keygen -b 4096と入力すると、4096ビットのRSA形式の鍵ペアが生成される。この4096ビットという値は、デフォルトよりも長く、より強力なセキュリティを提供することを意味する。コマンドを実行すると、鍵を保存する場所を尋ねられるが、特に指定がなければデフォルトの場所(通常は/home/ユーザー名/.ssh/id_rsa)を選ぶのが一般的だ。次に、「パスフレーズ」の設定を求められる。これは、プライベートキーをさらに保護するための追加のパスワードのようなもので、設定しておけば、もしプライベートキーが盗まれたとしても、このパスフレーズがなければ悪用されるリスクを減らせる。ただし、パスフレーズを忘れてしまうと、プライベートキーを使えなくなるので注意が必要だ。鍵の生成が完了すると、通常はあなたのホームディレクトリの下にある.sshという隠しフォルダの中に、id_rsa(これがプライベートキー)とid_rsa.pub(これがパブリックキー)という2つのファイルが作成される。ls -l ~/.sshコマンドで確認できる。

鍵ペアが作成できたら、次はパブリックキーをリモートサーバーへコピーする作業だ。これにはssh-copy-idコマンドが非常に便利だ。例えば、ssh-copy-id username@ip-addressのように実行する。ここでusernameはリモートサーバーのユーザー名、ip-addressはリモートサーバーのIPアドレスまたはホスト名だ。このコマンドは、あなたのローカルマシンのパブリックキー(~/.ssh/id_rsa.pub)をリモートサーバーの指定されたユーザーの~/.ssh/authorized_keysファイルに自動的に追加してくれる。最初に接続する際には、リモートサーバーのユーザーのパスワードを入力する必要があるが、一度コピーが完了すれば、次回からはパスワードなしでSSH接続ができるようになる。リモートサーバー側では、ls -l ~/.sshコマンドで確認すると、authorized_keysというファイルが作成されているのが確認できるだろう。このファイルに、接続を許可するパブリックキーが登録されているのだ。

パブリックキーがリモートサーバーに正常にコピーされた後、実際にSSH接続を試すと、パスワードを求められることなく、すぐにサーバーにログインできることを確認できる。例えば、ssh ijas@192.168.139.147のようにコマンドを実行すれば、パスワードの入力なしでリモートサーバーへの接続が確立されるはずだ。

このように、SSH鍵認証は従来のパスワード認証に比べて、はるかに高いセキュリティを提供する。ブルートフォース攻撃のリスクを大幅に減らし、安全なリモート接続を可能にする。また、パスワードを入力する手間が省けるため、ログインプロセスも高速化される。システムエンジニアにとって、Linuxシステムを管理する上でのベストプラクティスであり、安心感を持って作業を進めるための重要な要素となる。SSH鍵の理解と活用は、あなたのLinuxシステム管理のスキルを一段と向上させるだろう。

関連コンテンツ

【ITニュース解説】SSH Key Authentication in Linux | いっしー@Webエンジニア