2026年10月8日
2026年10月8日
SSHで別のサーバーに接続する方法
はじめに
sshはリモートサーバーに安全に接続するための標準プロトコルです。サーバー管理者は日常的にSSHで複数台のサーバーに接続するため、鍵認証や接続設定の最適化が作業効率に直結します。
本記事ではSSH接続の基本から、公開鍵認証の設定、~/.ssh/configを使った接続管理までを実践的に解説します。
症状・背景
- VPSやクラウドサーバーに初めて接続したい
- パスワード入力を省略して効率化したい
- 複数サーバーへの接続設定をまとめたい
- SSH接続でタイムアウトが頻発する
手順・設定方法
ステップ1: 基本的なSSH接続を行う
# ユーザー名@ホストで接続
ssh user@example.com
# ポート番号を指定
ssh -p 2222 user@example.com
# 接続詳細を表示(トラブル時)
ssh -v user@example.com
# 鍵ファイルを指定して接続
ssh -i ~/.ssh/mykey.pem user@example.com
ステップ2: 公開鍵認証を設定する
# 鍵ペアを生成(ed25519推奨)
ssh-keygen -t ed25519 -C "user@host" -f ~/.ssh/id_ed25519
# 公開鍵をリモートに登録
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@example.com
# 手動で登録する場合
cat ~/.ssh/id_ed25519.pub | \
ssh user@example.com "mkdir -p ~/.ssh && \
chmod 700 ~/.ssh && \
cat >> ~/.ssh/authorized_keys && \
chmod 600 ~/.ssh/authorized_keys"
ステップ3: ~/.ssh/configで接続を管理する
# 設定ファイルを作成
mkdir -p ~/.ssh && chmod 700 ~/.ssh
touch ~/.ssh/config && chmod 600 ~/.ssh/config
# エディタで編集
cat >> ~/.ssh/config <<'EOF'
Host web1
HostName 192.0.2.10
User deploy
Port 2222
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
EOF
# エイリアスで接続
ssh web1
ステップ4: 接続維持と多段SSH
# 切断防止のキープアライブ設定
ssh -o ServerAliveInterval=60 user@example.com
# 踏み台経由で接続(ProxyJump)
ssh -J bastion@gateway.example.com user@internal.local
# ~/.ssh/configでの記述例
# Host internal
# HostName 10.0.0.5
# ProxyJump bastion@gateway.example.com
# コマンドをリモートで実行して終了
ssh user@example.com "uptime && df -h"
注意事項
- 公開鍵認証を設定したらサーバー側で
PasswordAuthentication noに変更を推奨 - 秘密鍵のパーミッションは必ず
600、.sshディレクトリは700にする - 標準ポート22は攻撃対象になりやすいため変更を検討する
StrictHostKeyCheckingを無効化すると中間者攻撃のリスクがある
まとめ
1. 基本接続はssh user@host、ポート指定は-p
2. 公開鍵認証で安全かつパスワードレス接続が可能
3. ~/.ssh/configで接続情報を一元管理できる
4. ProxyJumpで踏み台サーバー経由の接続も簡潔に書ける
関連記事: