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で踏み台サーバー経由の接続も簡潔に書ける

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲