Skip to content

YoshinovLab/ssh-sandbox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SSH Sandbox Environment

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

クイックスタート

1. 環境の起動

# サンドボックス環境を起動
docker-compose up -d

# ログの確認
docker-compose logs -f

2. SSH接続テスト

パスワード認証での接続:

# 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

3. 環境の停止

# 環境を停止
docker-compose down

# データも含めて完全削除
docker-compose down -v

ユーザー情報

ユーザー パスワード 権限 用途
ubuntu testpass sudo 一般的なテスト用途
root rootpass root 管理者権限が必要なテスト

SSH設定

  • ポート: 8022 (ホスト側)
  • パスワード認証: 有効
  • 公開鍵認証: 有効
  • root ログイン: 有効
  • 空パスワード: 無効

カスタマイズ

SSH設定の変更

ssh-config/sshd_configを編集後、環境を再起動:

docker-compose restart

追加パッケージのインストール

Dockerfileを編集して必要なパッケージを追加:

RUN apt-get update && \
    apt-get install -y openssh-server your-package-here && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

公開鍵認証の設定

  1. SSH鍵ペアを生成:
ssh-keygen -t rsa -b 4096 -f ./keys/id_rsa
  1. 公開鍵を authorized_keys に追加:
cp ./keys/id_rsa.pub ./keys/authorized_keys
  1. 環境を再起動:
docker-compose restart

使用例

Python paramiko での接続テスト

import 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()

Ansible での接続テスト

# inventory.yml
all:
  hosts:
    ssh-sandbox:
      ansible_host: localhost
      ansible_port: 8022
      ansible_user: ubuntu
      ansible_password: testpass
ansible ssh-sandbox -i inventory.yml -m ping

トラブルシューティング

接続できない場合

1. コンテナが起動しているか確認

docker-compose ps

2. SSHサービスの状態確認

docker-compose exec ssh-server systemctl status ssh

3. ポート8022が使用中でないか確認

一般的なトラブルシューティング(netstatコマンド)
netstat -an | grep 8022
netstat がない場合の代替
sudo lsof -i :8022
nc -zv localhost 8022

Permission denied エラー

  • パスワードが正しいか確認
  • keys ディレクトリの権限を確認:
chmod 700 keys/
chmod 600 keys/*

セキュリティ注意事項

⚠️ 重要: この環境はテスト専用です。以下の点にご注意ください:

About

SSH の Dockerで構築されたサンドボックス

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors