Docker上で動作するSSHサンドボックス環境です。本番環境と分離してSSH接続を使用するアプリケーションの開発・テストを安全に行うことができます。
- 🔒 安全な分離環境: 本番システムに影響を与えることなくSSH関連の開発・テストが可能
- 🚀 簡単セットアップ: Docker Composeで一発起動
- 🔑 認証方式対応: パスワード認証・公開鍵認証の両方をサポート
- 🛠 カスタマイズ可能: SSH設定やユーザー設定を自由に変更可能
- Docker
- Docker Compose
ssh-sandbox/
├── docker-compose.yaml
├── Dockerfile
├── ssh-config/
│ └── sshd_config
├── keys/ # SSH公開鍵・秘密鍵を配置
│ ├── authorized_keys # (オプション)
│ └── id_rsa # (オプション)
└── README.md
# サンドボックス環境を起動
docker-compose up -d
# ログの確認
docker-compose logs -fパスワード認証での接続:
# ubuntuユーザーでの接続 (パスワード: testpass)
ssh ubuntu@localhost -p 8022
# rootユーザーでの接続 (パスワード: rootpass)
ssh root@localhost -p 8022公開鍵認証での接続:
# 公開鍵をkeys/authorized_keysに配置してから
ssh ubuntu@localhost -p 8022 -i ./keys/id_rsa# 環境を停止
docker-compose down
# データも含めて完全削除
docker-compose down -v| ユーザー | パスワード | 権限 | 用途 |
|---|---|---|---|
| ubuntu | testpass | sudo | 一般的なテスト用途 |
| root | rootpass | root | 管理者権限が必要なテスト |
- ポート: 8022 (ホスト側)
- パスワード認証: 有効
- 公開鍵認証: 有効
- root ログイン: 有効
- 空パスワード: 無効
ssh-config/sshd_configを編集後、環境を再起動:
docker-compose restartDockerfileを編集して必要なパッケージを追加:
RUN apt-get update && \
apt-get install -y openssh-server your-package-here && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*- SSH鍵ペアを生成:
ssh-keygen -t rsa -b 4096 -f ./keys/id_rsa- 公開鍵を authorized_keys に追加:
cp ./keys/id_rsa.pub ./keys/authorized_keys- 環境を再起動:
docker-compose restartimport paramiko
# パスワード認証
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('localhost', port=8022, username='ubuntu', password='testpass')
stdin, stdout, stderr = ssh.exec_command('whoami')
print(stdout.read().decode())
ssh.close()# inventory.yml
all:
hosts:
ssh-sandbox:
ansible_host: localhost
ansible_port: 8022
ansible_user: ubuntu
ansible_password: testpassansible ssh-sandbox -i inventory.yml -m pingdocker-compose psdocker-compose exec ssh-server systemctl status sshnetstat -an | grep 8022sudo lsof -i :8022nc -zv localhost 8022- パスワードが正しいか確認
- keys ディレクトリの権限を確認:
chmod 700 keys/
chmod 600 keys/*- 本番環境では使用しないでください
- パスワードは固定値のため、セキュアなネットワーク環境でのみ使用してください
- テスト完了後は環境を停止してください
- 機密データは保存しないでください