SSHとサーバー管理
SSHとサーバー管理完全ガイド
Section titled “SSHとサーバー管理完全ガイド”SSHを使用したサーバーへの接続と、基本的なサーバー管理の方法を詳しく解説します。
1. SSHとは
Section titled “1. SSHとは”SSHの役割
Section titled “SSHの役割”SSH(Secure Shell)は、暗号化された通信でリモートサーバーに接続するためのプロトコルです。
ローカルマシン ↓(SSH接続)リモートサーバーなぜSSHが必要か
Section titled “なぜSSHが必要か”問題のある接続(SSHなし):
# 問題: 平文での接続(Telnetなど)# 1. パスワードが平文で送信される# 2. 通信が傍受される可能性# 3. 認証情報が漏洩するリスク
# 問題点:# 1. セキュリティリスクが高い# 2. 認証情報が漏洩する可能性# 3. 通信が傍受される可能性解決: SSHによる暗号化接続
# 解決: SSHによる暗号化接続ssh user@example.com
# メリット:# 1. 通信が暗号化される# 2. 公開鍵認証による安全な認証# 3. ポートフォワーディングなどの機能2. SSH接続の基本
Section titled “2. SSH接続の基本”基本的な接続
Section titled “基本的な接続”# パスワード認証での接続ssh user@example.com
# ポートを指定して接続ssh -p 2222 user@example.com
# 詳細な情報を表示ssh -v user@example.com公開鍵認証の設定
Section titled “公開鍵認証の設定”# 公開鍵の生成ssh-keygen -t ed25519 -C "your_email@example.com"
# 公開鍵をサーバーにコピーssh-copy-id user@example.com
# または手動でコピーcat ~/.ssh/id_ed25519.pub | ssh user@example.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"SSH設定ファイル
Section titled “SSH設定ファイル”Host example HostName example.com User user Port 22 IdentityFile ~/.ssh/id_ed25519 ServerAliveInterval 60 ServerAliveCountMax 3
# 使用例ssh example3. 基本的なLinuxコマンド
Section titled “3. 基本的なLinuxコマンド”ファイル操作
Section titled “ファイル操作”# ファイルの一覧表示ls -la
# ディレクトリの移動cd /path/to/directory
# ファイルのコピーcp source.txt destination.txt
# ファイルの移動mv source.txt destination.txt
# ファイルの削除rm file.txt
# ディレクトリの作成mkdir new_directory
# ディレクトリの削除rm -r directoryファイルの編集
Section titled “ファイルの編集”# vi/vimエディタvi file.txt
# nanoエディタnano file.txt
# ファイルの内容を表示cat file.txt
# ファイルの内容をページ単位で表示less file.txt
# ファイルの末尾を表示tail -f file.txtプロセス管理
Section titled “プロセス管理”# 実行中のプロセスを表示ps aux
# プロセスの検索ps aux | grep nginx
# プロセスの終了kill <pid>
# 強制終了kill -9 <pid>
# システムリソースの確認tophtopシステム情報
Section titled “システム情報”# ディスク使用量の確認df -h
# ディレクトリのサイズ確認du -sh /path/to/directory
# メモリ使用量の確認free -h
# CPU情報の確認lscpu
# システム情報の確認uname -a4. システムサービスの管理
Section titled “4. システムサービスの管理”systemdの使用
Section titled “systemdの使用”# サービスの起動sudo systemctl start nginx
# サービスの停止sudo systemctl stop nginx
# サービスの再起動sudo systemctl restart nginx
# サービスの状態確認sudo systemctl status nginx
# サービスの自動起動設定sudo systemctl enable nginx
# サービスの自動起動解除sudo systemctl disable nginx# システムログの確認sudo journalctl -u nginx
# リアルタイムでログを表示sudo journalctl -u nginx -f
# 最近のログを表示sudo journalctl -u nginx --since "1 hour ago"
# ログファイルの確認sudo tail -f /var/log/nginx/access.logsudo tail -f /var/log/nginx/error.log5. セキュリティのベストプラクティス
Section titled “5. セキュリティのベストプラクティス”ファイアウォールの設定
Section titled “ファイアウォールの設定”# UFW(Ubuntu Firewall)の設定sudo ufw allow 22/tcp # SSHsudo ufw allow 80/tcp # HTTPsudo ufw allow 443/tcp # HTTPSsudo ufw enable
# ファイアウォールの状態確認sudo ufw statusSSHのセキュリティ設定
Section titled “SSHのセキュリティ設定”# パスワード認証を無効化(公開鍵認証のみ)PasswordAuthentication no
# rootログインを無効化PermitRootLogin no
# ポートの変更(オプション)Port 2222
# 設定の再読み込みsudo systemctl reload sshd6. よくある問題と解決策
Section titled “6. よくある問題と解決策”問題1: SSH接続できない
Section titled “問題1: SSH接続できない”原因:
- ファイアウォールでブロックされている
- SSHサービスが起動していない
- 認証情報が間違っている
解決策:
# SSHサービスの状態確認sudo systemctl status sshd
# ファイアウォールの確認sudo ufw status
# SSH接続のテストssh -v user@example.com問題2: ディスク容量が不足
Section titled “問題2: ディスク容量が不足”原因:
- ログファイルが大きくなっている
- 一時ファイルが蓄積している
解決策:
# ディスク使用量の確認df -h
# 大きなファイルの検索find / -type f -size +100M
# ログファイルのクリーンアップsudo journalctl --vacuum-time=7dこれで、SSHとサーバー管理の基礎知識と実務での使い方を理解できるようになりました。