mcpField
H
huawei-cloud-ascend-remote-connect

huawei-cloud-ascend-remote-connect

github.com/huaweicloudクラウド・DevOps59321 回インストール2 日前に更新
リポジトリ

huawei-cloud-ascend-remote-connect について

リモートサーバーやNPUを管理するユーザー向けに、Huawei Cloud Ascendマシンへの一時的なSSH接続を提供するPythonスキルです。複数ホストの同時セッションに対応し、コマンド検証、危険操作の確認、パスワードのメモリ内管理を備えます。

主な機能

  1. 01複数ホストへの同時SSHセッション
  2. 02npu-smiによるAscend NPU監視
  3. 03再利用可能な接続プール
  4. 04危険なコマンドの検証と確認
  5. 05セッション中のみの認証情報保持

活用シーン

  1. 01AscendマシンのNPU状態確認
  2. 02リモートサーバーでのシステムチェック
  3. 03複数のSSH接続先の管理

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/huaweicloud/huaweicloud-skills --skill huawei-cloud-ascend-remote-connect

インストール後、Claude Code で/huawei-cloud-ascend-remote-connectを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
iam-policies.md
troubleshooting.md
verification-method.md
scripts/
__init__.py
command_validator.py
executor.py
main.py
session_manager.py
ssh_client.py

詳細

Huawei Cloud Ascend リモート接続

概要

Huawei Cloud Ascend デバイスへの一時的な SSH リモート接続機能を提供します。複数のマシンへの同時接続に対応しています。すべての機密性の高い操作(削除、変更、移動など)は、実行前にユーザーの確認が必要です。パスワードはメモリ内にのみ保存され、セッション終了後に破棄されます。

アーキテクチャ

システムアーキテクチャ図
┌─────────────────────────────────────────────────────────────────────┐
│                        User Interaction Layer                       │
│  ┌─────────────────────────────────────────────────────────────┐    │
│  │  Natural Language Commands / CLI Arguments                  │    │
│  │  (connect, execute, monitor, disconnect)                   │    │
│  └────────────────────────────┬────────────────────────────────┘    │
│                               │                                     │
│                               ▼                                     │
├────────────────────────────────┼─────────────────────────────────────┤
│                      Skill Core Components                          │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐      │
│  │ Session Manager │←→│ Command Executor│←→│   SSH Client    │      │
│  │  - Connection   │  │  - NL Parsing   │  │  - paramiko     │      │
│  │  - Pooling      │  │  - Validation   │  │  - ControlMaster│      │
│  │  - Timeout Mgmt │  │  - Execution    │  │  - Key/Cert Auth│      │
│  └─────────────────┘  └─────────────────┘  └────────┬────────┘      │
│         │                      │                     │               │
│         │                      │                     ▼               │
│         │                      │         ┌─────────────────┐        │
│         │                      │         │ Command Validator│        │
│         │                      │         │  - Blocked Cmds  │        │
│         │                      │         │  - Confirm Req   │        │
│         │                      │         └─────────────────┘        │
│         │                      │                                     │
│         ▼                      ▼                                     │
├────────────────────────────────┼─────────────────────────────────────┤
│                    Huawei Cloud Ascend Infrastructure               │
│                          (Remote Target Servers)                    │
│  ┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐      │
│  │   Ascend NPU    │  │    OS Services  │  │    Containers   │      │
│  │  - npu-smi      │  │  - systemctl    │  │  - docker       │      │
│  │  - Driver       │  │  - journalctl   │  │  - k8s          │      │
│  │  - FW Upgrade   │  │  - Network Mgmt │  │  - Pods         │      │
│  └─────────────────┘  └─────────────────┘  └─────────────────┘      │
│                                                                      │
│  Data Flow: User → Skill → SSH Tunnel → Target Server → Response    │
└─────────────────────────────────────────────────────────────────────┘
コンポーネントの関係
コンポーネント責務主な機能
セッションマネージャーSSH 接続を管理する接続プーリング、タイムアウト管理、ライフサイクル制御
コマンド実行ツールユーザーコマンドを処理する自然言語解析、コマンドルーティング、結果のフォーマット
SSH クライアントセキュアなトンネルを確立するparamiko 統合、ControlMaster、認証
コマンドバリデーターセキュリティを適用するブロック対象コマンドの一覧、確認要件
クラウドサービスとの統合
  • Ascend NPU 管理:監視と管理のために npu-smi に直接アクセスします
  • Huawei Cloud インフラストラクチャ:クラウドサーバーとコンテナーへのセキュアな SSH アクセス
  • セキュリティコンプライアンス:認証情報をメモリ内にのみ保存し、セッションを分離します

前提条件

システム要件
  • Python 3.8+
  • paramiko >= 3.4.0
環境の確認

前提条件の確認:Python3 + paramiko が必要です

python3 --version  # Python3 >= 3.8
python3 -c "import paramiko; print('OK')"  # SSHライブラリ

インストールされていない場合:pip3 install --user paramiko cryptography

認証

セキュリティルール(必ず遵守してください):

  • パスワードの値を読み取ったり、エコーしたり、出力したりすることは禁止されています
  • 会話内でユーザーにパスワードを直接入力するよう求めることは禁止されています
  • コマンドライン引数から認証情報を読み取ることのみ許可されています

パラメーターの確認

入力パラメーター
パラメーター必須説明
hostはい接続先サーバーの IP アドレス
portいいえSSH ポート(デフォルト:22)
userはいSSH ユーザー名
passwordはいSSH パスワード
パラメーターの検証
  • IP アドレス形式:IPv4(例:192.168.1.100)
  • ポート範囲:1-65535
  • ユーザー名:英数字とアンダースコア
  • パスワード:空でない文字列
確認が必要な操作

次の操作には、ユーザーによる明示的な確認が必要です。

  • 削除:rm、rmdir
  • フォーマット:mkfs、fdisk -d、parted rm
  • マウント解除:umount
  • 再起動:reboot、shutdown、init 6
  • シャットダウン:poweroff、halt、init 0
  • ユーザーの削除:userdel、groupdel
  • 権限の変更:chmod -R、chown -R

IAM 権限ポリシー

接続先サーバーで SSH サービスが有効になっており、提供された認証情報に適切な権限があることを確認してください。

接続先サーバーで最低限必要な権限:

  • SSH アクセス(ポート 22 またはカスタムポート)
  • システム管理操作に必要な sudo 権限

コアワークフロー

タスク 1:SSH 接続の確立
python3 scripts/main.py --host <ascend-server-ip> --port 22 --user root --password <your-password> --command "npu-smi info"
タスク 2:対話モード
python3 scripts/main.py

使用方法

Ascend サーバーへの接続
SSH connect to 192.168.1.100 port 22 as root with password xxx
コマンドの実行
NPU の監視
npu-smi info
Check NPU status
NPU health check
システム管理
Check CPU and memory
df -h
top -bn1
接続管理
Show current connections
Switch to 192.168.1.101
Disconnect SSH

出力形式

標準応答形式

すべてのコマンド出力は、構造化された形式に従います。

┌─────────────────────────────────────────┐
│ Target: <host>:<port>                   │
│ Command: <executed-command>             │
│ Exit Code: <0-success/non-zero-fail>    │
├─────────────────────────────────────────┤
│ STDOUT:                                │
│ <command-output>                        │
├─────────────────────────────────────────┤
│ STDERR:                                 │
│ <error-output>                          │
├─────────────────────────────────────────┤
│ Duration: <seconds>s                     │
└─────────────────────────────────────────┘
エラー応答形式
[ERROR] <error-code>
Message: <error-description>
Suggestion: <troubleshooting-tip>
成功の指標
  • 終了コード:0
  • STDOUT:想定される出力を含みます
  • STDERR:空、または警告のみを含みます

検証方法

基本的な検証手順
  1. 環境の確認

    python3 --version  # Verify Python 3.8+
    python3 -c "import paramiko"  # Verify paramiko installed
    
  2. 接続テスト

    python3 scripts/main.py --host <test-ip> --port 22 --user root --password <test-pwd> --command "echo test"
    
  3. NPU 監視テスト

    python3 scripts/main.py --host <ascend-ip> --user root --password <pwd> --command "npu-smi info"
    
期待される結果
テストケース期待される出力
環境の確認Python のバージョンが 3.8 以上で、paramiko のインポートに成功する
接続テスト終了コード 0、stdout に「test」が含まれる
NPU 情報NPU デバイス情報が表示される

詳しい検証手順については、references/verification-method.md を参照してください。


スクリプトファイル

エントリーファイル
  • main.py:スキルのエントリーファイル(必須)
    • 機能:対話型メニューを提供し、統一されたエントリーポイントとなります
    • メニュー項目:
      • SSH 接続を確立
      • コマンドを実行
      • 切断
コアスクリプト
  • executor.py:コマンド実行ツール(メインエントリー)

    • 機能:ユーザー入力を解析し、対応するハンドラーにコマンドを振り分けます
    • コアメソッド:
      • handle_command(text):コマンド振り分けのエントリー
      • _connect(info):SSH 接続を確立
      • _detect_disks():未マウントのディスクを検出
      • _handle_auto_mount(text):起動時の自動マウントを設定
      • _confirm_disk_merge(info):ディスク結合を確認
  • session_manager.py:セッションマネージャー

    • 機能:複数の SSH セッションを同時に管理します
    • コアメソッド:
      • create_session(host, port, username, password):新しいセッションを作成
      • execute_command(command):アクティブなセッションでコマンドを実行
      • switch_session(host):指定したホストのセッションに切り替え
      • close_session():現在のセッションを閉じる
      • get_session_info():すべてのセッション情報を取得
  • ssh_client.py:SSH クライアント

    • 機能:低レベルの SSH 接続を実装し、パスワード認証と鍵認証に対応します
    • コアメソッド:
      • connect():SSH 接続を確立
      • exec_command(command):リモートコマンドを実行
      • close():接続を閉じる
  • command_validator.py:コマンドバリデーター

    • 機能:危険なコマンドをフィルタリングするセキュリティレイヤー
    • 検証ルール:
      • ブロックリスト:直接ブロックします(例:フォークボム)
      • 要確認:確認を求めます(例:rm -rf、reboot)
      • 許可リスト:そのまま実行します(例:ls、cat、df)

対応機能

NPU 管理
  • NPU の状態監視(npu-smi)
  • NPU のヘルスチェック
  • NPU 設定の表示
ディスク管理
  • ディスクの検出
  • LVM の結合
  • パーティションのマウント
  • 起動時の自動マウント
  • ディスクのヘルスチェック
  • 空き容量の確認
システム管理
  • CPU/メモリ/ディスクの監視
  • システムの更新
  • ユーザー/権限の管理
  • Cron ジョブの管理
ネットワーク管理
  • ポートスキャン
  • ファイアウォールの設定
  • ルートの表示
  • ネットワークインターフェースの設定
  • DNS のトラブルシューティング
コンテナー管理
  • Docker のインストールと管理
  • イメージ管理
  • コンテナー管理
  • ログの表示
  • Docker Compose の操作
セキュリティ管理
  • ログイン監査
  • SSH 鍵の管理
  • 高リスクコマンドのブロック
ログ管理
  • システムログ
  • アプリケーションログの分析
  • エラーのトラブルシューティング
ファイル操作
  • アップロード/ダウンロード
  • コピー/転送
  • 権限の変更
  • 作成/削除

接続プール管理

機能
  • 接続の再利用:同じ接続先には同じ接続を再利用し、ハンドシェイクの繰り返しを回避します
  • 自動切断:10 分間アイドル状態が続くと自動的に切断します(設定可能)
  • スレッドセーフ:複数スレッドからの同時アクセスに対応します
  • 状態の確認:接続プールの状態とアイドル時間を確認できます
保護メカニズム
  • 最大接続数の制限:デフォルトは 50 で、複数の接続先に対応します
  • リクエストレート制限:デフォルトの最大同時リクエスト数は 200 です
  • 接続タイムアウト:デフォルトは 10 秒です
  • 実行タイムアウト:デフォルトは 60 秒です
  • ヘルスチェック:30 秒ごとに接続状態を確認し、異常な接続を自動的に切断します
# Using connection pool
from ssh_client import get_pool

pool = get_pool()
result = pool.execute(conn_info, 'ls -la')

# View pool status (includes statistics)
status = pool.get_pool_status()
# {
#   'connections': [...],
#   'total_connections': 2,
#   'max_connections': 10,
#   'max_concurrent_requests': 5,
#   'statistics': {'total_requests': 100, 'failed_requests': 2, ...}
# }

# Configure protection parameters
pool.configure(
    max_connections=20,           # Max connections
    max_concurrent_requests=10,   # Max concurrent requests
    idle_timeout=300,             # Idle timeout (seconds)
    connect_timeout=15,           # Connection timeout (seconds)
    execute_timeout=120           # Execute timeout (seconds)
)

複数マシンへの接続

IP アドレスで区別し、複数のマシンに同時に接続できます:

SSH connect to 192.168.1.100 port 22 as root with password xxx
SSH connect to 192.168.1.101 port 2222 as admin with password yyy
接続先の切り替え
Switch to 192.168.1.101
現在の接続を表示
View current connections

セキュリティメカニズム

機密操作の確認

以下の操作にはユーザーの確認が必要です:

  • 削除:rm、rmdir
  • フォーマット:mkfs、fdisk -d、parted rm
  • アンマウント:umount
  • 再起動:reboot、shutdown、init 6
  • シャットダウン:poweroff、halt、init 0
  • ユーザーの削除:userdel、groupdel
  • 権限の変更:chmod -R、chown -R
高リスクコマンドのブロック

以下のコマンドはデフォルトでブロックされます:

  • :(){ :|:& };:(フォークボム)
  • ディスクを直接フォーマットするコマンド
パスワードのセキュリティ
  • パスワードはメモリ内にのみ保存されます
  • セッション終了後、直ちに消去されます
  • 設定ファイルやログには書き込まれません

ベストプラクティス

接続管理
  1. 接続の再利用:接続プールは既存の接続を自動的に再利用します
  2. タイムアウトの設定:ネットワーク状況に応じてタイムアウトを調整します
  3. アイドルタイムアウト:デフォルトは10分です。頻繁に切断される場合は、より短く設定してください
セキュリティに関する推奨事項
  1. 鍵認証を使用する:可能な場合は、パスワードより SSH キーを優先してください
  2. 権限を制限する:必要最小限の sudo 権限を付与してください
  3. セッションを監視する:アクティブな接続を定期的に確認してください
  4. ログを監査する:ログインログを定期的に確認してください
パフォーマンスの最適化
  1. コマンドをまとめる:関連するコマンドをまとめ、接続のオーバーヘッドを減らします
  2. 接続プールを調整する:同時接続の必要数に応じてプールのサイズを調整します
  3. コマンドのタイムアウト:実行時間の長いコマンドには適切なタイムアウト値を設定します

注意事項

セキュリティに関する警告

⚠️ 認証情報の取り扱い:

  • パスワードをログに記録したり、表示したりしないでください
  • 使用後は認証情報をメモリから消去してください
  • 本番環境では SSH キーを使用してください

⚠️ 高リスク操作:

  • 破壊的な操作(rm、mkfs、reboot)は必ず確認してください
  • ブロックされたコマンドを回避することはできません
  • デプロイ前にセキュリティの仕組みを確認してください
よくある問題
問題原因解決策
接続がタイムアウトするネットワーク/ファイアウォールネットワーク接続を確認する
認証に失敗する認証情報が正しくないユーザー名/パスワードを確認する
コマンドがブロックされるセキュリティポリシーコマンドバリデーターのルールを確認する
プールが枯渇する接続数が多すぎるmax_connections を増やす
制限事項
  • SSH パスワード認証のみ(対話型のパスワードプロンプトには非対応)
  • 接続ごとに単一ユーザーのセッション
  • 同時接続は最大50件(設定可能)

トラブルシューティング

接続に失敗する場合
  • IP アドレスとポートが正しいか確認してください
  • ファイアウォールでポートが許可されているか確認してください
  • ユーザー名とパスワードが正しいか確認してください
  • 接続先ホストで SSH サービスが実行中か確認してください
コマンドの実行に失敗する場合
  • コマンドの構文が正しいか確認してください
  • アクティブな接続があるか確認してください
  • コマンドがセキュリティポリシーによってブロックされていないか確認してください
ディスクのマージに失敗する場合
  • ディスクが他のプロセスに使用されていないか確認してください
  • LVM ツールがインストールされているか確認してください
  • ディスクがすでにマウントされていないか確認してください

ディレクトリ構成

huawei-cloud-ascend-remote-connect/
├── SKILL.md              # Skill definition entry file (required)
├── scripts/              # Scripts directory (required)
│   ├── __init__.py       # Module export
│   ├── main.py           # Skill entry script (required)
│   ├── executor.py       # Command executor
│   ├── session_manager.py # Session manager
│   ├── ssh_client.py     # SSH client implementation
│   └── command_validator.py # Command validator
└── references/           # Reference documentation directory
    ├── troubleshooting.md # Troubleshooting guide
    ├── verification-method.md # Verification steps
    └── iam-policies.md   # IAM policies

参考資料

ドキュメント説明
references/troubleshooting.mdトラブルシューティングガイド
references/verification-method.md検証手順
scripts/main.pyメインのエントリースクリプト

作成者:huawei-cloud

コメント