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


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者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 ユーザー名@接続先 の形で覚える
・鍵認証(秘密鍵・公開鍵)を使うとパスワード不要で安全に接続できる
・接続できない時の原因はほぼ「IP違い・鍵の設定ミス・ファイアウォール」の3つ


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

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

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

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

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

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

この仕組みを使うと、東京にいながら大阪のサーバーを操作したり、自宅のPCからAWSのクラウドサーバーを管理したりすることができます。
比較項目 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接続では、パスワード認証よりも「鍵認証(公開鍵認証)」を使う方が安全で便利です。実務の現場でも、鍵認証が標準です。

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

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

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

「公開鍵(南京錠)を持ったサーバー」に対して、「秘密鍵(鍵)を持ったPC」からのみ接続を許可する仕組みです。パスワードを毎回入力する必要がなく、パスワード盗聴の被害も受けません。

2. SSH鍵ペアを作成する

鍵の生成は、自分のPC(接続元)で行います。

# 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

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

生成されるファイルは2つです。

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

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

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

# ssh-copy-idコマンドを使うと自動で登録できる(おすすめ) ssh-copy-id 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 # 登録後は鍵認証で接続できる(パスワード不要) ssh tomo@192.168.1.100

ssh-copy-idコマンドが使えない環境(Windowsのcmd.exeなど)では、手動でサーバーの ~/.ssh/authorized_keys に公開鍵の内容を貼り付けます。その際、パーミッションの設定が必要です(後述のトラブルシュートを参照)。

接続設定を.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

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

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

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

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

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

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

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

本記事のまとめ

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

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

STEP1:ssh ユーザー名@サーバーIP でパスワード接続を試みる
STEP2:ssh-keygenで鍵ペアを作り、ssh-copy-idで公開鍵を登録する
STEP3:~/.ssh/configにサーバー情報をまとめてニックネームで接続できるようにする

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

関連記事 ~ ここから実践的なスキルを身につける

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

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