SSHとは?仕組みと使い方を初心者向けに解説【公開鍵認証の基本】

SSHとは 仕組みと使い方を初心者向けに解説

レンタルサーバーやVPSを触り始めると必ず出会う「SSH」。なんとなく怖くて避けていませんか。

SSH(Secure Shell)は、離れた場所にあるサーバーを、暗号化された安全な通信で遠隔操作する仕組みです。この記事では、仕組みのイメージ、実際の接続手順、安全に使うための必須設定までを初心者向けに解説します。

SSHは「安全な遠隔操作の電話回線」

サーバーは通常、手元にない場所(データセンター)で動いています。その操作のために、手元のPCからサーバーへ暗号化された通信路をつなぎ、コマンドを送り込む――これがSSHです。ポート番号は標準で22番が使われます(ポート番号の記事参照)。

通信はすべて暗号化されるため、途中で盗聴されても内容は読めません。かつて使われた平文のtelnetに代わり、サーバー遠隔操作の世界標準になっています。

認証の仕組み:パスワードと公開鍵

SSHの公開鍵認証の仕組み。手元のPCの秘密鍵とサーバーの公開鍵のペアが一致して初めてログインできる図解
「鍵ペア」の考え方はSSH以外でも使われる重要概念です

SSHのログイン方法は2つあります。

  • パスワード認証:IDとパスワードでログイン。手軽ですが、総当たり攻撃の標的になります
  • 公開鍵認証(推奨):手元のPCに「秘密鍵」、サーバーに「公開鍵」を置き、ペアの一致で認証。パスワードのように推測されることがなく、実運用ではこちらが標準です

実印(秘密鍵)と印鑑証明(公開鍵)の関係に似ています。秘密鍵は絶対に他人に渡さない・流出させないのが大原則です。

実際に接続してみる

SSH接続の流れ。ssh-keygenで鍵ペアを作成し、sshコマンドでサーバーに接続してLinux操作を行う例
WindowsもMacも、標準のターミナルからそのまま使えます
  1. 鍵ペアを作る:ターミナルで ssh-keygen -t ed25519 を実行。ホームフォルダの.sshに秘密鍵(id_ed25519)と公開鍵(id_ed25519.pub)が生成されます
  2. 公開鍵をサーバーに登録:VPSなら契約時の管理画面で登録できることが多く、既存サーバーならssh-copy-idコマンドが便利です
  3. 接続:ssh ユーザー名@サーバーのIPアドレス で接続。初回は「本当に接続するか」の確認(フィンガープリント)が出るのでyesと入力
  4. 操作・切断:接続後は通常のLinuxコマンドで操作し(基本コマンド20選参照)、exitで切断します

WindowsにもOpenSSHが標準搭載されており、追加ソフトなしでこの手順が使えます。

安全に使うための必須設定(サーバー側)

SSHの22番ポートは、世界中のボットが四六時中ノックしてくる場所です。VPSを借りたら初日に以下を設定しましょう。

  • 公開鍵認証のみにする:パスワード認証を無効化(PasswordAuthentication no)すれば、総当たり攻撃は事実上無力化されます
  • rootの直接ログインを禁止:一般ユーザーでログイン→必要時にsudo、が基本形(PermitRootLogin no)
  • ファイアウォールの設定:SSH・Web(80/443)など必要なポートだけを開ける

SSHでできること(接続の先へ)

  • ファイル転送:scp・SFTPコマンドで、暗号化されたままファイルを送受信できます(FTPの安全な後継)
  • VS Codeからのリモート開発:Remote-SSH拡張機能を使うと、サーバー上のファイルを手元のエディタで直接編集できます
  • GitHubへの接続:Gitのpush/pullもSSH鍵で認証するのが定番です(Git入門参照)

よくある質問

Q. SSHはWindowsでも使えますか?

A. 使えます。Windows 10以降はOpenSSHクライアントが標準搭載されており、ターミナル(PowerShell)からsshコマンドがそのまま動きます。

Q. 秘密鍵を入れたPCを紛失したらどうなりますか?

A. 鍵にパスフレーズを設定していれば即座に悪用はされにくいですが、サーバー側から該当の公開鍵を削除し、新しい鍵ペアに差し替えるのが正しい対処です。鍵作成時のパスフレーズ設定をおすすめします。

Q. 接続すると「Permission denied」と出ます。

A. ユーザー名の誤り、鍵の指定漏れ、サーバー側の公開鍵未登録、鍵ファイルの権限(パーミッション)の問題が典型原因です。「ssh -v」を付けて実行すると詳細ログで原因を絞り込めます。

まとめ

SSHは「暗号化された遠隔操作」であり、鍵ペアの概念さえつかめば怖いものではありません。ssh-keygenで鍵を作り、sshで接続し、exitで帰る。この基本動作をWSLやVPSで体験すれば、サーバーの世界がぐっと身近になります。