ネットワーク・通信

Linux sshコマンド入門|リモートサーバーに安全に接続する

Linux ssh ネットワーク

Linux sshコマンド入門
リモートサーバーに安全に接続する

sshは、リモートサーバーに暗号化された安全な接続を行うコマンドです。サーバー管理、リモート作業、ファイル転送の基盤となる重要なツールです。

こんな人向けの記事です

  • リモートサーバーに接続して作業したい人
  • SSH鍵認証の設定方法を学びたい人
  • SSH接続を効率化したい人

Step 1SSHの基本的な接続

sshコマンドで、ユーザー名とホスト名(またはIPアドレス)を指定して接続します。

ターミナル
# 基本的な接続
ssh username@hostname

# ポートを指定して接続(デフォルトは22)
ssh -p 2222 username@hostname

# IPアドレスで接続
ssh user@192.168.1.100

# リモートでコマンドを実行して切断
ssh username@hostname "ls -la /var/log"
初回接続時のフィンガープリント確認

初めて接続するサーバーでは「Are you sure you want to continue connecting?」と聞かれます。接続先が正しいことを確認して yes と入力してください。

Step 2SSH鍵の作成と設定

パスワード認証よりも安全で便利な鍵認証の設定方法です。

ターミナル
# SSH鍵ペアの作成(Ed25519推奨)
ssh-keygen -t ed25519 -C "your_email@example.com"

# 公開鍵をリモートサーバーに登録
ssh-copy-id username@hostname

# 手動で登録する場合
cat ~/.ssh/id_ed25519.pub | ssh username@hostname "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
秘密鍵は絶対に共有しない

~/.ssh/id_ed25519(秘密鍵)は自分だけが持つものです。共有するのは ~/.ssh/id_ed25519.pub(公開鍵)だけです。

Step 3SSH configで接続を簡略化

~/.ssh/config ファイルに設定を書くと、短い名前で接続できるようになります。

ターミナル
# ~/.ssh/config の記述例
Host myserver
    HostName 192.168.1.100
    User alice
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Host production
    HostName prod.example.com
    User deploy
    IdentityFile ~/.ssh/deploy_key

設定後は短い名前で接続できます。

ターミナル
# 設定した名前で簡単接続
ssh myserver
ssh production

Step 4便利なSSH機能

SSHにはポートフォワーディングなどの便利な機能があります。

ターミナル
# ローカルポートフォワーディング
# ローカルの8080をリモートの80に転送
ssh -L 8080:localhost:80 username@hostname

# リモートのDBにローカルからアクセス
ssh -L 3306:localhost:3306 username@dbserver

# バックグラウンドでポートフォワーディング
ssh -fNL 8080:localhost:80 username@hostname

# 接続を維持する設定(~/.ssh/config)
Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3
ポートフォワーディングの活用例

リモートサーバー上のデータベースやWebアプリにローカルのブラウザからアクセスする場合に便利です。-L 8080:localhost:3000 とすれば、ローカルの localhost:8080 でリモートの3000番ポートにアクセスできます。

Step 5セキュリティのベストプラクティス

SSH接続のセキュリティを高めるための設定です。

ターミナル
# 鍵ファイルのパーミッション確認
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/config

# サーバー側:パスワード認証を無効化(/etc/ssh/sshd_config)
# PasswordAuthentication no
# PermitRootLogin no

# 設定変更後にsshdを再起動
# sudo systemctl restart sshd
パーミッションに注意

SSHの鍵ファイルやconfigファイルのパーミッションが緩いと、SSHが接続を拒否します。秘密鍵は 600、.sshディレクトリは 700 に設定してください。