LinuxへのSSH接続入門|初心者でも安全にリモートサーバーにつなぐ方法

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > LinuxへのSSH接続入門|初心者でも安全にリモートサーバーにつなぐ方法
「サーバーにつなごうとしたら "ssh" と入力するように言われたけれど、何をどうすればいいのかわからない。」
「ターミナルに謎の文字列を貼り付けたら接続できたけれど、何をやったのか意味がわかっていない。」

SSHは、Linuxを使う上で最初に必ずぶつかる壁です。クラウドのVPSを借りた人も、自宅でRaspberry Piを使っている人も、WSL2でサーバーを立てた人も、「SSHで接続してください」という手順を踏まなければ先に進めません。

この記事では、SSH接続の仕組みを初心者でもわかるように丁寧に解説します。
「コマンドを丸暗記するだけ」ではなく、何が起きているのかを理解した上で使えるよう、接続の仕組みから鍵認証・パスワード認証の無効化まで順を追ってカバーします。

実行環境: Ubuntu 24.04 LTS / Rocky Linux 9.4 / macOS Monterey以降で動作確認済み

この記事のポイント

・SSHはネット経由でLinuxサーバーを安全に操作するための仕組み
・基本コマンドは ssh ユーザー名@接続先 の形で覚える
・鍵認証(秘密鍵・公開鍵)はパスワード認証より安全な実務標準の接続方式
・鍵認証後はパスワード認証を無効化してセキュリティを完成させる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

SSHとは何か:リモート操作の仕組みを理解する

SSH(Secure Shell)は、離れた場所にあるLinuxサーバーをインターネット経由で安全に操作するための仕組みです。

「Secure(安全)」という名の通り、通信内容がすべて暗号化されます。メールや昔のFTP(ファイル転送プロトコル)などがパスワードを「生」のテキストで送っていたのに対し、SSHではキーボードの入力からサーバーの出力まで、すべてが暗号化されて通信します。

日常の操作で例えると、次のようなイメージです。

自分のPC:手元にある操作端末(SSHクライアント)
サーバー:遠くにある機械(SSHサーバー)
SSH:2つを結ぶ「暗号化された専用回線」

この仕組みを使うと、東京にいながら大阪のサーバーを操作したり、自宅のPCからAWSのクラウドサーバーを管理したりすることができます。インターネット黎明期に使われていたTelnetは通信が暗号化されておらず、パスワードが盗聴される危険がありました。SSHはその後継として登場し、現在ではすべてのLinuxサーバーで標準の接続方式になっています。
比較項目 Telnet(古い接続方法) SSH(現在の標準)
通信の暗号化 なし(平文で送信) あり(全通信を暗号化)
パスワード保護 盗聴されると丸見え 暗号化されるため安全
現在の利用状況 ほぼ廃止 すべてのLinuxサーバーで標準

基本的なSSH接続の使い方

1. SSHコマンドの基本形式

SSH接続の基本コマンドは次の形です。

# 基本形式 ssh ユーザー名@接続先サーバー # 例:ユーザー名「tomo」でIPアドレス 192.168.1.100 のサーバーに接続 ssh tomo@192.168.1.100 # 例:ユーザー名「ec2-user」でAWSのサーバーに接続 ssh ec2-user@54.123.45.67

コマンドを実行すると、接続先サーバーのパスワードを聞かれます。入力しても画面には何も表示されませんが(セキュリティのため)、正しく入力してEnterを押せば接続できます。

2. ポート番号を指定して接続する

SSHは標準でポート番号22番を使います。セキュリティ設定でポート番号を変更しているサーバーに接続する場合は、-pオプションでポートを指定します。

# ポート番号を指定して接続(例:2222番ポート) ssh -p 2222 tomo@192.168.1.100

クラウドサービス(さくらのVPS、ConoHa、Vultrなど)の設定画面に「SSHポート番号」という項目があれば、そこに記載されている番号を使います。

3. 接続を切断する

接続を終了するには、exitコマンドを入力するか、Ctrl+Dを押します。

# 接続を切断する [tomo@server ~]$ exit # または Ctrl+D を押す

プロンプト($#の前の文字列)に「ホスト名」が表示されていたら、そのサーバーにログイン中です。exit後に自分のPCのプロンプトに戻ることを確認してください。

SSH鍵認証:パスワードより安全な接続方法

SSH接続では、パスワード認証よりも「鍵認証(公開鍵認証)」を使う方が安全で便利です。実務の現場でも、鍵認証が標準です。

インターネットに公開されたサーバーは、世界中の攻撃者から毎日24時間、自動的にパスワードを試し続けるプログラム(ブルートフォース攻撃)にさらされています。鍵認証では数学的な暗号を使うため、どれだけ試行されても突破できません。
比較項目 パスワード認証 SSH鍵認証
安全性 低い(総当たり攻撃に弱い) 高い(数学的に破ることが極めて困難)
設定の手軽さ 簡単(設定不要) 少し手間がかかる(初回のみ)
ログイン操作 毎回パスワード入力が必要 パスフレーズなしなら自動接続も可能
本番サーバーでの推奨度 非推奨 必須

1. 公開鍵と秘密鍵の仕組みを理解する

鍵認証は「南京錠と鍵」のたとえでイメージするとわかりやすいです。

公開鍵(.pub):南京錠のようなもの。サーバー側に置く。誰に見られても問題ない
秘密鍵:南京錠を開ける鍵。自分のPCにだけ保管し、絶対に人に渡さない

「公開鍵(南京錠)を持ったサーバー」に対して、「秘密鍵(鍵)を持ったPC」からのみ接続を許可する仕組みです。自分のPCが秘密鍵を使って「私が本人です」というデータを作り、サーバーが公開鍵でそれを検証します。秘密鍵を持っている本人以外はこのデータを作れないため、なりすましが不可能な仕組みになっています。

公開鍵:サーバーに登録する / GitHubに登録する / 他人に送ってよい
秘密鍵:自分のPCの外に出さない / 絶対に共有しない

2. SSH鍵ペアを作成する

鍵の生成は、自分のPC(接続元)で行います。Windows(WSL2含む)・Mac・Linuxいずれでも同じコマンドが使えます。

# SSH鍵ペアを生成する(Ed25519形式。セキュリティ強度が高くおすすめ) ssh-keygen -t ed25519 -C "自分のメールアドレスや識別名" # 実行例 $ ssh-keygen -t ed25519 -C "tomo@example.com" Generating public/private ed25519 key pair. Enter file in which to save the key (/home/tomo/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/tomo/.ssh/id_ed25519 Your public key has been saved in /home/tomo/.ssh/id_ed25519.pub The key fingerprint is: SHA256:aBcDeFgHiJkLmNoPqRsTuVwXyZ1234567890abcde tomo@example.com

保存先はそのままEnterでOKです。パスフレーズは設定すると鍵自体にも暗証番号がかかり、より安全になります。最初のうちは空白のままでも構いません。

生成後は、ファイルが正しく作られているか確認しましょう。

# .sshディレクトリの内容を確認 ls -la ~/.ssh/ # 出力例 -rw------- 1 tomo tomo 411 May 15 10:00 id_ed25519 -rw-r--r-- 1 tomo tomo 103 May 15 10:00 id_ed25519.pub

拡張子なしのファイルが秘密鍵、「.pub」が公開鍵です。秘密鍵のパーミッションが「600(-rw-------)」になっていれば正常です。

~/.ssh/id_ed25519:秘密鍵。自分のPCにだけ保管する(絶対に公開しない)
~/.ssh/id_ed25519.pub:公開鍵。サーバー側に設置するファイル

古いサーバーがEd25519に対応していない場合は、RSA形式を使います。

# RSA 4096ビットで生成(Ed25519が使えない場合のみ) ssh-keygen -t rsa -b 4096 -C "tomo@example.com"

3. 公開鍵をサーバーに登録する

生成した公開鍵(.pubファイルの内容)を、接続先サーバーの ~/.ssh/authorized_keys というファイルに追記します。

# ssh-copy-idコマンドを使うと自動で登録できる(おすすめ) ssh-copy-id -i ~/.ssh/id_ed25519.pub tomo@192.168.1.100 # 実行例 /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s) /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed tomo@192.168.1.100's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'tomo@192.168.1.100'" and check to make sure that only the key(s) you wanted were added. # 登録後は鍵認証で接続できる(パスワード不要) ssh tomo@192.168.1.100

ssh-copy-idコマンドが使えない環境(Windowsのcmd.exe・VPSコンソールからのみアクセス可能なケースなど)では、サーバー側で手動登録します。

# サーバー側で実行する(手動登録の手順) # 1. .sshディレクトリを作成してパーミッションを設定 mkdir -p ~/.ssh chmod 700 ~/.ssh # 2. authorized_keysファイルに公開鍵の内容を追記 # 自分のPCで「cat ~/.ssh/id_ed25519.pub」を実行して表示される内容をコピーして貼り付ける echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA..." | tee -a ~/.ssh/authorized_keys # 3. パーミッションを設定 chmod 600 ~/.ssh/authorized_keys

登録後は、鍵認証で実際にログインできるか確認してください。

# 鍵認証でSSH接続を試みる ssh -i ~/.ssh/id_ed25519 tomo@192.168.1.100 # パスワードなしでログインできれば成功 Last login: Thu May 15 09:00:00 2026 from 192.0.2.1 [tomo@server ~]$

ここでパスワードを聞かれずにログインできれば、鍵認証の設定は成功です。

パスワード認証を無効にしてセキュリティを強化する

鍵認証でログインできることを確認したら、次はパスワード認証を無効にします。これにより、鍵を持っていない攻撃者は一切ログインできなくなります。

【重要】この設定は「鍵認証でログインできることを確認した後」に行ってください。パスワード認証を無効にすると、秘密鍵のないPCからは一切ログインできなくなります。設定ミスで締め出された場合はVPSの管理コンソールから復旧が必要になります。

1. sshd_configを編集する

# SSHデーモンの設定ファイルを編集 sudo nano /etc/ssh/sshd_config

以下の項目を見つけて変更します。行頭に「#」がある場合はコメントアウトを外してください。

# 変更箇所(/etc/ssh/sshd_config) # パスワード認証を無効化 PasswordAuthentication no # rootでの直接ログインを禁止 PermitRootLogin no # 公開鍵認証が有効になっていることを確認 PubkeyAuthentication yes

2. SSHサービスを再起動する

# 設定を反映させるためにSSHサービスを再起動 sudo systemctl restart sshd # サービスが正常に起動しているか確認 sudo systemctl status sshd # 出力例(active (running)になっていれば正常) sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled) Active: active (running) since Thu 2026-05-15 10:00:00 JST

3. 別のターミナルで接続確認する(重要)

現在のSSHセッションを切らずに、別のターミナルウィンドウを開いて接続を確認します。現在のセッションを保ったまま作業することで、万一設定ミスがあっても元のセッションから修正できます。

# 新しいターミナルで鍵認証による接続テスト ssh tomo@192.168.1.100 # パスワード認証が完全に無効化されていれば以下のエラーが出る(正常) # tomo@192.168.1.100: Permission denied (publickey). # 鍵認証では問題なくログインできることを確認 ssh -i ~/.ssh/id_ed25519 tomo@192.168.1.100

鍵認証でのみログインできることが確認できれば、セキュリティ強化は完了です。

接続設定を.ssh/configファイルにまとめる

接続先が増えてきたとき、毎回「長いIPアドレスとユーザー名」を打つのは大変です。~/.ssh/configファイルにまとめておくと、短いニックネームで接続できるようになります。

# ~/.ssh/config の記述例 Host myserver HostName 192.168.1.100 User tomo Port 22 IdentityFile ~/.ssh/id_ed25519 # Webサーバー(さくらのVPS) Host sakura-vps HostName sv12345.sakura.ne.jp User ubuntu IdentityFile ~/.ssh/id_ed25519 # AWSのEC2インスタンス Host aws-dev HostName 54.123.45.67 User ec2-user IdentityFile ~/.ssh/aws-key.pem

設定後は、ニックネームだけで接続できます。

# 設定前(毎回この形式で入力) ssh -i ~/.ssh/id_ed25519 tomo@192.168.1.100 # 設定後(ニックネームだけでOK) ssh myserver

configファイルにもパーミッションを設定しておきます。

# configファイルのパーミッションを設定(所有者のみ読み書き可能) chmod 600 ~/.ssh/config

実務でも ~/.ssh/config の活用は鉄則です。複数のサーバーを管理するエンジニアほど、このファイルを丁寧に整備しています。

「接続できない」時のトラブルシュート

SSH接続でつまずく原因は、実際にはほぼ4パターンに絞られます。順番に確認していきましょう。

1. ホスト名・IPアドレスの確認

「Connection refused」や「No route to host」というエラーが出た場合は、接続先の情報を確認してください。

# エラー例 ssh: connect to host 192.168.1.200 port 22: Connection refused # 確認事項 # 1. IPアドレスやホスト名が正しいか # 2. サーバーが起動しているか(pingで確認) ping 192.168.1.200 # 3. SSHサービスが起動しているか(サーバー側で確認) systemctl status sshd

2. 鍵認証のパーミッション設定

鍵認証を手動で設定した場合、パーミッション(権限)が正しくないと接続が拒否されます。これは初心者がよくハマるポイントです。

# サーバー側(~/.sshと~/.ssh/authorized_keysのパーミッション) # 注意:設定が緩すぎると鍵認証が機能しない # .sshディレクトリ:700(自分のみ読み書き実行) chmod 700 ~/.ssh # authorized_keysファイル:600(自分のみ読み書き) chmod 600 ~/.ssh/authorized_keys # 自分のPC側(秘密鍵):600または400の権限にしないとエラーになる chmod 600 ~/.ssh/id_ed25519 # 接続時に詳細ログを出して原因を絞り込む ssh -v tomo@192.168.1.100

3. ファイアウォールの確認

サーバー側のファイアウォール(firewalld、ufw)でSSHポート(22番)が開放されているか確認します。

# Rocky Linux / RHEL系(firewalld) firewall-cmd --list-all | grep ssh # Ubuntu系(ufw) ufw status | grep 22 # クラウドの場合はVPSコントロールパネルの「セキュリティグループ」や # 「ファイアウォール設定」でポート22が開放されているか確認する

4. 「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!」エラー

サーバーを再構築したあとや、同じIPアドレスに別のサーバーを割り当てた後によく出るエラーです。SSHは接続先サーバーの「フィンガープリント(指紋)」を記憶しており、前回と異なると警告を出します。

# エラー例 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ # 対処:known_hostsから該当サーバーのエントリを削除する ssh-keygen -R 192.168.1.100 # 再接続すると新しいフィンガープリントの確認メッセージが出る # 「yes」と答えると接続できるようになる

このエラーが出るのは、サーバーを再構築した直後が多いです。本当に再構築した後なら上記手順で解決します。ただし、心当たりなくこのエラーが出た場合は、中間者攻撃(Man-in-the-Middle攻撃)の可能性もあるため、接続先が正しいか必ず確認してください。

本記事のまとめ

SSH接続は最初は難しく感じますが、仕組みを理解すれば「暗号化された安全なリモートコントロール」だとわかります。

まずは次の3ステップを実践してみてください。

STEP1:ssh ユーザー名@サーバーIP でパスワード接続を試みる
STEP2:ssh-keygenで鍵ペアを作り、ssh-copy-idで公開鍵を登録して鍵認証に切り替える
STEP3:sshd_configでパスワード認証を無効化し、~/.ssh/configでサーバー接続を整理する

SSHが使えるようになれば、クラウドサーバーの操作・自動化スクリプトの実行・ファイル転送(SCPやSFTP)など、Linuxの実務スキルを一気に広げることができます。
やりたいこと コマンド
パスワードでSSH接続する ssh ユーザー名@接続先
ポート番号を指定して接続する ssh -p 2222 ユーザー名@接続先
SSH鍵ペアを生成する ssh-keygen -t ed25519 -C "識別名"
公開鍵をサーバーに登録する ssh-copy-id -i ~/.ssh/id_ed25519.pub ユーザー名@接続先
鍵認証で接続する ssh -i ~/.ssh/id_ed25519 ユーザー名@接続先
パスワード認証を無効にする sshd_config の PasswordAuthentication を no に変更
接続設定をニックネームで管理する ~/.ssh/config に Host 設定を記述
接続を切断する exit または Ctrl+D
ホスト指紋エラーを解消する ssh-keygen -R サーバーIP

実践的なスキルを身につけるために読む記事

SSH接続が使えるようになったら、次はサーバー上でのLinuxコマンド操作を身につけましょう。
以下の7つのテーマで、実務で使えるLinuxスキルをステップアップできます。

Linuxコマンド:catコマンドでファイル内容を表示する方法 ~ ファイルの中身を確認する基本操作
シェルスクリプト:crontabコマンドの設定と書き方 ~ 定期的な作業を自動化する方法
セキュリティ:chmodコマンドで権限を変更する方法 ~ ファイルを守る権限設定の基本
サーバー構築:systemctlコマンドでサービスを管理する方法 ~ サーバーの起動・停止を制御する
ネットワーク:pingコマンドの使い方 ~ ネットワークの疎通を確認する基本手順
ディスク管理:dfコマンドでディスク容量を確認する方法 ~ ストレージの空き状況を把握する
現場Tips:historyコマンドでコマンド履歴を確認する方法 ~ 過去に実行したコマンドを振り返る

現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
SSH接続の基本を押さえたら、ぜひ次のステップとして実務で使えるサーバー構築スキルを身につけてみてください。
無料マニュアルを受け取る >>

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。