はじめに
こんにちは!今回はsshコマンドについて解説します。
sshはリモートホストに安全に接続するコマンドです。サーバー管理、リモートワーク、開発環境へのアクセスなど、IT業務ではめっちゃ重要なコマンド。
「遠くのコンピュータに安全につながる魔法」くらいの感じですね。これなしでは現代のIT業務は成り立ちません。
sshコマンドとは
sshは"Secure Shell"の略で、リモートマシンに暗号化された接続を確立する外部コマンドです。
昔のtelnetと違い、通信内容が暗号化されるので、パスワードやデータが盗聴される心配がありません。サーバーへのログイン、ファイル転送、トンネリングなど、様々な用途で活躍します。
基本構文
|
|
ユーザー名を省略した場合は、現在のシステムのユーザー名が使用されます。
主なオプション
| オプション | 説明 |
|---|---|
-u |
ユーザー名を指定 |
-p |
ポート番号を指定(デフォルトは22) |
-i |
秘密鍵ファイルを指定 |
-v |
詳細表示(ログイン時のトラブル対応で便利) |
-N |
コマンド実行なし(ポートフォワーディング用) |
-L |
ローカルポートフォワーディング |
-R |
リモートポートフォワーディング |
-X |
X11フォワーディング(GUIアプリを遠隔実行) |
-C |
圧縮を有効にする |
-A |
SSH認証エージェント転送 |
-o |
オプション設定(例:-o StrictHostKeyChecking=no) |
使用例
例1: 基本的なリモート接続
|
|
実行結果:
|
|
example.comというホストにuserユーザーでログインします。初回接続時はホストキーを確認するメッセージが表示されます。
例2: ユーザー名とホスト名を分けて指定
|
|
実行結果:
|
|
-uオプションでユーザー名を指定。[email protected]と同じ意味です。
例3: 秘密鍵を使用してログイン
|
|
実行結果:
|
|
秘密鍵ベースの認証を使う場合。公開鍵認証が設定されていれば、パスワードなしでログインできます。
例4: ポート番号を指定
|
|
実行結果:
|
|
SSHがデフォルトの22番ポートではなく、2222番ポートで動作している場合に使用します。
例5: リモートコマンドを実行
|
|
実行結果:
|
|
リモートホスト上でコマンドを実行。その後、接続は自動で切断されます。
例6: 詳細ログを表示してトラブル対応
|
|
実行結果:
|
|
-vオプションで接続プロセスの詳細が表示されます。ログイン失敗の原因を調べるのに便利。
例7: ローカルポートフォワーディング
|
|
実行結果:
|
|
リモートホストのローカルホスト:3306ポートを、ローカルマシンの3306ポートにフォワーディング。リモートのDBに安全にアクセスする時に便利です。
例8: リモートホストでコマンドを実行して結果を取得
|
|
実行結果:
|
|
リモートホスト上で複数のコマンドを実行して、その結果をローカルで表示。スクリプト内で使用することが多いです。
例9: 圧縮転送を有効にして遅い接続で通信量削減
|
|
実行結果:
|
|
-Cオプションで通信を圧縮。遅いネットワーク接続での使用に向いています。
例10: Xフォワーディングで遠隔GUIアプリを実行
|
|
実行結果:
|
|
リモートホスト上のGUIアプリケーションをローカルマシンに表示。GUIツールを遠隔で使う際に便利です。
Tips・注意点
秘密鍵のパーミッション設定
秘密鍵は所有者のみが読み取れるように設定する必要があります。
|
|
パーミッションが間違っていると、Permissions 0644 for 'id_rsa' are too openというエラーが出てログインできません。
SSH設定ファイルで接続設定を管理
~/.ssh/configで接続設定を保存すると、毎回オプションを指定する必要がなくなります。
|
|
設定後は、ssh myserverだけで接続できます。
パスフレーズなしの秘密鍵は危険
秘密鍵盗難時の被害を減らすため、パスフレーズを設定することを強く推奨します。
|
|
SSHエージェントを使って秘密鍵のパスフレーズを保管
|
|
エージェント起動後は、パスフレーズを1回入力すればセッション中は再入力不要になります。
初回接続時のホストキー確認
初回接続時に表示されるフィンガープリントは、接続先を検証するために重要です。信頼できる管理者に確認してからyesと答えてください。
実践的な使い方
例1: リモートサーバーのバックアップ
|
|
リモートホストのデータを圧縮してローカルに保存。定期的に実行するスクリプトに組み込めます。
例2: 複数サーバーへの一括実行
|
|
複数のサーバーに同じコマンドを実行。サーバー管理が効率化できます。
例3: SSHTunnelでリモートDBにアクセス
|
|
踏み台サーバー経由でリモートDBに接続。社内ネットワークのDBに安全にアクセスできます。
例4: リモートファイル編集
|
|
リモートファイルをローカルエディタで表示・確認。編集はできませんが、内容確認に便利です。
まとめ
sshコマンドのポイント:
- リモートホストに暗号化された接続を確立する
- 基本形:
ssh user@hostname - 秘密鍵認証:
ssh -i ~/.ssh/id_rsa user@hostname - ポート指定:
ssh -p 2222 user@hostname - リモートコマンド実行:
ssh user@hostname "command" - ポートフォワーディング:
ssh -L local:remote -N user@hostname ~/.ssh/configで接続設定を管理すると便利- 秘密鍵のパーミッション(600)を忘れずに!
SSH接続はサーバー管理の必須スキル。秘密鍵と公開鍵の関係をしっかり理解して、セキュアな運用を心がけましょう!