基本的なSSHコマンドを使用してリモートサーバーに接続する方法
Secure Shell (SSH) の概要
Secure Shell (SSH) は、安全なリモート管理の基盤であり、保護されていないネットワーク上でネットワークサービスを安全に操作するための暗号化されたネットワークプロトコルです。これは、システム管理者や開発者がLinux、Unix、macOSサーバーにリモートでアクセスおよび管理するために使用される標準的な方法です。Telnetのような古い安全でないプロトコルとは異なり、SSHはユーザー名、パスワード、コマンド出力を含むすべての送信データを暗号化し、プライバシーと整合性を保証します。
このガイドでは、プロトコルの最も基本的な側面、つまり基本的な ssh コマンド構文を使用してシンプルかつ直接的な接続を確立することに焦点を当てます。システムメンテナンス、コードのデプロイ、ファイルの転送など、基本的な接続メカニズムを理解することは、Secure Shellプロトコルのすべての機能を活用するための最初の重要なステップです。
接続の前提条件
接続を試みる前に、以下のコンポーネントが準備されていることを確認してください。
- SSHクライアント: ほとんどの最新オペレーティングシステム (Linux、macOS) には、OpenSSHクライアントがデフォルトで含まれています。Windows 10/11にも統合されたOpenSSHクライアントが含まれていますが、古いバージョンではPuTTYのようなサードパーティ製アプリケーションが必要な場合があります。
- サーバーアドレス (ホスト): リモートマシンのIPアドレス (例:
192.168.1.50) または完全修飾ドメイン名 (FQDN、例:server.example.com)。 - ユーザー名: リモートサーバー上の有効なユーザーアカウント (例:
root、ubuntu、jdoe)。 - 資格情報: 指定されたユーザーのパスワード、または対応する秘密SSHキーファイル。
基本的なSSHコマンド構文
SSH接続の確立は、シンプルで一貫性のある構文構造に依存します。このコマンドは、誰が接続するのか、どこへ接続したいのかを指定する必要があります。
コア構文の内訳
SSHコマンドの最も基本的な構造は次のとおりです。
ssh [options] username@host_address
| コンポーネント | 説明 | 例の値 |
|---|---|---|
ssh |
Secure Shell接続を開始するコマンド。 | - |
[options] |
接続を変更するためのオプションのフラグ (例: ポート、IDファイル)。 | -p 2222 |
username |
ログインしたいリモートサーバー上のアカウント名。 | sysadmin |
host_address |
リモートサーバーのIPアドレスまたはドメイン名。 | 172.31.255.10 または webserver.com |
デフォルトポートへの接続
デフォルトでは、SSHサーバーはTCPポート22でリッスンします。リモートサーバーがこのデフォルトポートを使用している場合、ユーザー名とホスト以外にオプションを指定する必要はありません。
例: ユーザーjdoeとして192.168.1.100のサーバーに接続する
ssh [email protected]
サーバーに初めて接続する場合、SSHクライアントはサーバーのホストキーを確認するよう求め、接続を信頼するかどうかを尋ねます。続行するには yes と入力する必要があります。このキーはその後、~/.ssh/known_hosts ファイルに保存されます。
必須の接続オプション
基本的な構文はほとんどの標準的な接続で機能しますが、接続をカスタマイズしたりトラブルシューティングしたりするためにいくつかのオプションが頻繁に使用されます。
カスタムポートの指定 (-p)
セキュリティ上の理由から、多くのサーバー管理者はデフォルトのSSHポート (22) を非標準ポート (例: 2222、50000) に変更します。このカスタムポートを指定するには、-p フラグを使用する必要があります。
構文:
ssh -p [port_number] username@host_address
例: ポート5555でappserver.localに接続する
ssh -p 5555 [email protected]
ヒント: ポートの位置
-pオプションはusername@host引数の前に来ることに注意してください。
詳細出力 (-v)
接続に問題がある場合 (例: 接続タイムアウト、認証失敗) は、詳細モードがトラブルシューティングに非常に役立ちます。-v フラグは出力レベルを上げ、ネゴシエーション、キー交換、認証試行を含む接続プロセスの詳細な手順を表示します。
構文:
ssh -v username@host_address
さらに詳細なデバッグには、-vv または -vvv (最大詳細度) を使用できます。
単一のリモートコマンドの実行
SSHは通常、インタラクティブなシェルセッションを開くために使用されます。ただし、連続したセッションを確立することなく、リモートサーバーで単一のコマンドを実行できます。接続はコマンドを実行し、出力を返し、その後すぐに閉じます。
構文:
ssh username@host_address "command to run"
例: リモートサーバーのディスク容量 (df -h) を確認する:
ssh [email protected] "df -h"
認証方法
接続が開始されると、サーバーはあなたの身元を確認するために認証を要求します。主な2つの方法は、パスワード認証とキーベース認証です。
1. パスワード認証
これは最もシンプルな方法で、接続確立後にサーバーがユーザーのパスワードを要求します。SSHはパスワードの送信を暗号化します。
プロセス:
sshコマンドを実行します。- サーバーがプロンプトを表示:
[email protected]'s password: - パスワードを入力します (入力は表示されません)。
警告: セキュリティ上の懸念
便利な反面、パスワード認証はブルートフォース攻撃に対して脆弱です。ベストプラクティスとしては、公開サーバーではパスワード認証を完全に無効にし、SSHキーのみに依存することが推奨されます。
2. キーベース認証
キーベース認証は、サーバーに保存された公開鍵と、ローカルマシンに安全に保存された対応する秘密鍵という、一対の暗号化キーを使用します。この方法はパスワードよりもはるかに安全です。
IDファイルの指定 (-i)
秘密キーファイルがデフォルトの場所 (~/.ssh/id_rsa または ~/.ssh/id_ed25519) にない場合は、-i オプションを使用してその場所を指定する必要があります。
構文:
ssh -i /path/to/private/key/file username@host_address
例: prod_server_keyという特定のキーを使用して接続する
ssh -i ~/.ssh/prod_server_key [email protected]
キー認証のセットアップ (概要)
キー認証を使用するには、通常、以下の手順に従います。
ssh-keygenを使用してローカルマシンでキーペアを生成します。- 公開鍵をリモートサーバーの
~/.ssh/authorized_keysファイルにコピーします。これは通常、ssh-copy-idユーティリティを使用して行われます。
ssh-copy-id username@host_address
実践的なSSHコマンドの概要
| 目的 | コマンド例 | 説明 |
|---|---|---|
| 標準接続 | ssh [email protected] |
デフォルトポート22を使用して接続します。 |
| カスタムポート | ssh -p 443 [email protected] |
ポート443に接続します。 |
| キー認証 | ssh -i ~/.ssh/dev_key dev@testbed |
特定の秘密キーファイルを使用して接続します。 |
| 接続のデバッグ | ssh -v [email protected] |
トラブルシューティングのために詳細モードで接続を実行します。 |
| リモートコマンド | ssh user@host "uptime" |
uptime コマンドを実行して終了します。 |
まとめ
基本的な ssh コマンドは、リモートサーバー管理への入り口です。コア構文 (ssh user@host) を習得し、ポート指定 (-p) やIDファイル (-i) などの必須オプションを理解することで、あらゆるリモートサーバー環境に確実に安全な接続を確立できます。キーベース認証への移行は、高いレベルのセキュリティを維持するために不可欠であり、可能な限りパスワードログインよりも優先されるべきです。接続が確立されると、リモートマシンを管理するための完全なコマンドラインアクセスが可能になります。