「ターミナルに謎の文字列を貼り付けたら接続できたけれど、何をやったのか意味がわかっていない。」
SSHは、Linuxを使う上で最初に必ずぶつかる壁です。クラウドのVPSを借りた人も、自宅でRaspberry Piを使っている人も、WSL2でサーバーを立てた人も、「SSHで接続してください」という手順を踏まなければ先に進めません。
この記事では、SSH接続の仕組みを初心者でもわかるように丁寧に解説します。
「コマンドを丸暗記するだけ」ではなく、何が起きているのかを理解した上で使えるよう、接続の仕組みから鍵認証まで順を追ってカバーします。
実行環境: Ubuntu 24.04 LTS / Rocky Linux 9.4 / macOS Monterey以降で動作確認済み
この記事のポイント
・SSHはネット経由でLinuxサーバーを安全に操作するための仕組み
・基本コマンドは ssh ユーザー名@接続先 の形で覚える
・鍵認証(秘密鍵・公開鍵)を使うとパスワード不要で安全に接続できる
・接続できない時の原因はほぼ「IP違い・鍵の設定ミス・ファイアウォール」の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
2. ポート番号を指定して接続する
SSHは標準でポート番号22番を使います。セキュリティ設定でポート番号を変更しているサーバーに接続する場合は、-pオプションでポートを指定します。# ポート番号を指定して接続(例:2222番ポート) ssh -p 2222 tomo@192.168.1.100
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
生成されるファイルは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サーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
SSH接続の基本を押さえたら、ぜひ次のステップとして実務で使えるサーバー構築スキルを身につけてみてください。
無料マニュアルを受け取る >>
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

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