Linuxサーバーを借りた初日に、多くの人が最初につまずく場所がここです。ターミナルを開いてみたものの、どんなコマンドを打てばいいか分からず、検索しても「SSH鍵」「authorized_keys」など難しそうな言葉ばかりで手が止まってしまう。
この記事では、SSH接続の仕組みをゼロから解説し、Windowsからのパスワード接続・公開鍵認証の設定方法・よくあるエラーの対処まで、実際のコマンドと出力例を交えて初心者向けにハンズオン形式で解説します。RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済みです。
この記事のポイント
・SSHはサーバーへの暗号化接続で、パスワードより公開鍵認証が安全
・WindowsはPowerShellまたはWSL2からsshコマンドで接続できる
・ssh-keygenで鍵ペアを生成し公開鍵をauthorized_keysに登録するのが基本手順
・「Permission denied」はauthorized_keysのパーミッションが原因のことが多い
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
SSHとは何か?なぜパスワードよりも安全なのか
SSH(Secure Shell)は、ネットワークを通じて遠隔のサーバーに安全に接続するためのプロトコルです。メールでいえば「封筒ごと暗号化した内容証明郵便」のようなイメージで、通信内容を第三者が傍受しても解読できない仕組みになっています。
VPSやクラウドサーバー(AWS・ConoHa・さくらVPS等)では、SSHで接続してコマンドを実行するのが基本です。以前は「パスワード認証」でログインするのが一般的でしたが、現在は「公開鍵認証」が主流です。その理由は以下の通りです。
・パスワード認証:ブルートフォース攻撃(総当たり攻撃)に弱い。辞書攻撃で突破されるリスクがある
・公開鍵認証:数学的に極めて突破困難な鍵ペアを使うため、事実上の解読不能
・実態:VPSを借りた直後からボットによるSSH総当たり攻撃が始まっている(/var/log/secureに記録される)
公開鍵認証の仕組みは「鍵と錠前」に例えるとわかりやすいです。自分のPCに「秘密鍵(鍵)」を、サーバーに「公開鍵(錠前)」を置いておき、鍵と錠前が一致した場合だけ接続できる仕組みです。
パスワードでSSHに接続する基本手順
まず最初に、パスワード認証でサーバーに接続する方法を確認します。VPSを契約した直後はパスワード認証で接続することになります。
1. WindowsからSSHで接続する(PowerShellまたはWSL2)
Windows 10以降では、PowerShellからsshコマンドが使えます。スタートメニューから「PowerShell」を開いて、以下のコマンドを実行してください。
# 接続コマンドの基本形式 # ssh ユーザー名@サーバーのIPアドレス ssh root@192.0.2.10
接続するとパスワードを聞かれます。
root@192.0.2.10's password:
パスワードを入力してEnterを押すと、接続が完了します。プロンプトがサーバーのものに変われば成功です。
Last login: Thu Aug 7 08:00:00 2026 from 203.0.113.5 [root@web-server01 ~]#
「Last login」が表示され、プロンプトが「[root@web-server01 ~]#」に変わりました。これでサーバーに接続できています。WSL2をお使いの方は、Ubuntuのターミナルから同じコマンドで接続できます。
2. MacのPCからSSHで接続する
Macでは「アプリケーション→ユーティリティ→ターミナル」を開いて同じコマンドを実行します。ポート番号を指定したい場合は -p オプションを使います。
# デフォルトは22番ポート(省略可能) ssh admin@192.0.2.10 # ポート番号を明示的に指定する場合 ssh -p 22 admin@192.0.2.10
公開鍵認証を設定してパスワード不要で安全に接続する
パスワード認証で接続できたら、次は公開鍵認証に切り替えます。公開鍵認証を設定すると、パスワードを入力せずに接続できるようになり、セキュリティも大幅に向上します。
1. 鍵ペアを生成する(自分のPCで実行)
自分のPC(接続元のWindowsまたはMac)でターミナルを開いて実行します。注意:サーバー上ではなく、必ず自分のPC側で実行してください。誤ってサーバー上で生成した秘密鍵をそのままサーバーに置いてしまうと、秘密鍵が流出するリスクがあります。
ssh-keygen -t ed25519 -C "your-email@example.com"
コマンドを実行すると、対話式で設定が進みます。
Generating public/private ed25519 key pair. Enter file in which to save the key (/home/admin/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/admin/.ssh/id_ed25519 Your public key has been saved in /home/admin/.ssh/id_ed25519.pub The key fingerprint is: SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your-email@example.com
保存先はそのままEnterでOKです。パスフレーズは空欄でもよいですが、設定しておくと鍵ファイルが盗まれても接続できなくなるためよりセキュリティが高まります。
生成される鍵ファイルは2種類あります。
・~/.ssh/id_ed25519:秘密鍵。絶対に外部に渡さない。流出したら即座に鍵を再生成する
・~/.ssh/id_ed25519.pub:公開鍵。サーバーに登録するファイル(.pubがついているほう)
2. 公開鍵をサーバーに登録する
生成した公開鍵をサーバーに登録します。最も簡単な方法は ssh-copy-id コマンドを使う方法です。まだパスワード認証で接続できる状態で、自分のPCから実行してください。
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@192.0.2.10
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/admin/.ssh/id_ed25519.pub" /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s)... Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@192.0.2.10'" and check to make sure that only the key(s) you wanted were added.
「Number of key(s) added: 1」と表示されれば登録完了です。ssh-copy-id が使えない環境(Windowsの一部)では、手動で登録します。
# 自分のPCで公開鍵の内容を確認する cat ~/.ssh/id_ed25519.pub # 出力例: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO... your-email@example.com # サーバーにパスワードSSHでログインして実行する mkdir -p ~/.ssh chmod 700 ~/.ssh # 公開鍵の内容(上のcat出力結果)を貼り付ける echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO..." >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
注意:authorized_keysのパーミッションは600(自分のみ読み書き可)でなければなりません。ここが違うと公開鍵認証が動作しません。OpenSSHは意図的にパーミッションが緩いauthorized_keysを無視する設計になっています。
3. 公開鍵認証で接続を確認する
サーバーからログアウトして、自分のPCから再度接続します。今度はパスワードを聞かれずにログインできるはずです。
ssh root@192.0.2.10
Last login: Thu Aug 7 09:00:00 2026 from 203.0.113.5 [root@web-server01 ~]#
パスワードを聞かれずにログインできれば成功です。
実務で役立つSSH設定Tips
公開鍵認証が設定できたら、日常の作業効率を上げるTipsを紹介します。
~/.ssh/config でサーバー接続を短縮する
運用現場では複数のサーバーを管理することが多く、毎回長いコマンドを入力するのは手間です。自分のPCの ~/.ssh/config ファイルに設定を書いておくと、短いエイリアスで接続できます。
# ~/.ssh/config の設定例(自分のPCで編集する) Host myserver HostName 192.0.2.10 User root Port 22 IdentityFile ~/.ssh/id_ed25519
設定後は「ssh myserver」だけで接続できます。サーバーが複数台ある場合はHost名を変えてそれぞれ設定しておくと管理が楽になります。
ssh myserver Last login: Thu Aug 7 09:30:00 2026 from 203.0.113.5 [root@web-server01 ~]#
「接続できない」トラブルシュート
SSHで接続できない時は、エラーメッセージを確認すると原因が特定できます。代表的なエラーとその対処法を紹介します。
「Permission denied (publickey)」が出た時
公開鍵認証が失敗している状態です。主な原因と確認手順は以下の通りです。
・authorized_keysのパーミッションが違う:サーバーにログインして「chmod 600 ~/.ssh/authorized_keys」を実行
・.sshディレクトリのパーミッションが違う:「chmod 700 ~/.ssh」を実行
・公開鍵が正しく登録されていない:「cat ~/.ssh/authorized_keys」で内容を確認
・秘密鍵の指定が違う:「ssh -i ~/.ssh/id_ed25519 root@192.0.2.10」のように明示指定して試す
# -vvvオプションでデバッグ情報を確認する(接続失敗の詳細が分かる) ssh -vvv root@192.0.2.10 # サーバーのSSHログを確認する(サーバー上で実行) tail -50 /var/log/secure # または systemdのjournalで確認 journalctl -u sshd -n 50
「Connection refused」が出た時
サーバーのSSHサービス自体に接続できていない状態です。VPSのコントロールパネルからコンソールにアクセスして確認します。
・SSHサービスが起動していない:コンソールから「systemctl start sshd」を実行
・ポート番号が違う:VPSのコントロールパネルで初期SSHポートを確認する
・ファイアウォールがブロックしている:「firewall-cmd --list-all」でポート22が開いているか確認
「Host key verification failed」が出た時
以前接続したことのあるIPアドレスのサーバーを再構築した場合に起きます。自分のPCの ~/.ssh/known_hosts に古い鍵情報が残っているのが原因です。
# 古いホスト鍵を削除する(192.0.2.10は実際のIPに置き換える) ssh-keygen -R 192.0.2.10
削除後に再度接続すると、新しいホスト鍵が登録されます。
本記事のまとめ
SSH接続の基本から公開鍵認証の設定まで解説しました。以下のテーブルで要点を確認してください。
| やりたいこと | コマンド・手順 |
|---|---|
| パスワードでSSH接続する | ssh ユーザー名@サーバーIP |
| 鍵ペアを生成する | ssh-keygen -t ed25519 |
| 公開鍵をサーバーに登録する | ssh-copy-id -i ~/.ssh/id_ed25519.pub user@IP |
| 接続先を短縮する | ~/.ssh/config に Host エイリアスを設定 |
| 旧ホスト鍵を削除する | ssh-keygen -R サーバーIP |
| SSHデバッグ情報を確認する | ssh -vvv user@サーバーIP |
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
コマンドを「なんとなく打つ」段階から卒業したい方は、ぜひ受け取ってみてください。
無料マニュアルを受け取る >>
次に読むべき関連記事
SSH接続の基本を習得したら、セキュリティ強化やファイル転送など実務につながる技術に進みましょう。
・ssh-keygenコマンドでSSH公開鍵認証を設定する方法|鍵の生成からauthorized_keys設定まで・SSHのポート番号を変更する方法|sshd_configの設定からfirewalld・SELinux対応まで
・sshコマンドのポートフォワーディングで安全に接続する方法|-L・-R・-Dオプションの使い分け
・scpコマンドでファイルを安全に転送する方法|公開鍵認証やディレクトリごとコピーも
・screenコマンドでSSH切断後もプロセスを実行し続ける方法|デタッチ・アタッチの使い方も
・firewall-cmdコマンドでポートを開放・管理する方法|ゾーン・サービス・永続化の使い分け
・nmcliコマンドでネットワーク接続を設定する方法|静的IP・DHCP・接続追加・削除の手順も
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:LinuxのDockerでJupyter Notebookを動かす入門|AIデータ分析環境をWSL2に1コマンドで構築する方法
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます