基本的なSSHコマンドを使ったリモートサーバーへの接続方法
安全なリモートサーバーアクセスに必須の、基本的な`ssh`コマンドをマスターしましょう。この必須ガイドでは、ユーザー名、ホストアドレス、カスタムポートオプション(`-p`)など、そのコアとなる構文を解説します。パスワード認証と、より安全な鍵認証(`-i`)の両方を使って接続を確立する方法を学びます。新規ユーザーから管理者まで、この記事は毎回堅牢で効率的な接続を保証するための実践的な例と、必須のトラブルシューティングのヒントを提供します。
基本的なSSHコマンドを使用してリモートサーバーに接続する方法
Secure Shell(SSH)は、リモートサーバーで安全なターミナルセッションを開くための標準的な方法です。サーバーアドレス、ユーザー名、有効な認証情報があれば、基本的な ssh コマンドでラップトップからそのマシンのシェルにアクセスできます。
よくある問題は、通常は単純です。間違ったユーザー名、間違ったポート、秘密鍵の欠落、またはこれまで見たことのないサーバーホストキーのプロンプトです。
接続の前提条件
接続を試みる前に、以下のコンポーネントが準備されていることを確認してください。
- 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クライアントはサーバーのホストキーを確認するように促します。フィンガープリントがプロバイダーまたは管理者が期待するものと一致する場合のみ、確認してください。受け入れると、SSHはキーを ~/.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 "実行するコマンド"
例: リモートサーバーのディスク容量(df -h)を確認する:
ssh [email protected] "df -h"
これは簡単な確認に便利です:
ssh [email protected] "systemctl status nginx --no-pager"
認証方法
接続が開始されると、サーバーはあなたの身元を確認するために認証を要求します。主な方法は、パスワード認証と鍵ベースの認証の2つです。
1. パスワード認証
これは最も簡単な方法で、接続が確立された後にサーバーがユーザーのパスワードを要求します。SSHはパスワードの送信を暗号化します。
プロセス:
sshコマンドを実行します。- サーバーがプロンプトを表示:
[email protected]'s password: - パスワードを入力します(入力は表示されません)。
パスワード認証は便利ですが、公開されているサーバーはブルートフォースログイン試行の標的になることがよくあります。インターネットに公開されたシステムでは、鍵ベースのログインとパスワード認証の無効化が通常、より安全なベースラインです。
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 コマンドを実行して終了します。 |
クイックトラブルシューティングチェック
コマンドが失敗した場合、サーバー設定を変更する前にエラーを確認してください:
Connection timed out: ホストまたはポートがファイアウォール、セキュリティグループ、またはルーティングの問題によってブロックされている可能性があります。Connection refused: サーバーには到達可能ですが、そのポートでリッスンしているものはありません。Permission denied (publickey): サーバーが鍵、ユーザー名、または認証方法を受け入れませんでした。REMOTE HOST IDENTIFICATION HAS CHANGED: 保存されたホストキーが一致しなくなりました。これはサーバーの再構築後に発生する可能性がありますが、深刻なセキュリティ問題を示すこともあります。古いキーを削除する前に、フィンガープリントを確認してください。
鍵の問題については、通常このコマンドで十分な詳細が得られます:
ssh -vvv -i ~/.ssh/prod_server_key [email protected]
実践的なポイント
ssh user@host から始めましょう。サーバーがカスタムポートを使用している場合は -p を追加し、特定の秘密鍵が必要な場合は -i を追加し、認証やネットワークエラーが不明な場合は -v または -vvv を使用します。インターネットに公開されたサーバーの場合は、鍵ベースの認証に移行し、アクセスプロセスで許可されている場合はパスワードログインを無効にしておくことをお勧めします。