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 に設定してください。