classfang/ssh-mcp-server

基于 SSH 的 MCP 服务 🧙‍♀️。已被MCP官方收录 🎉。 SSH MCP Server 🧙‍♀️. It has been included in the community MCP repository 🎉.

ssh‑mcp‑server

概要

ssh‑mcp‑serverは、AIアシスタント(または Model Context Protocol (MCP) を話すクライアント)とリモートSSHサーバー間のブリッジとして機能するNode‑JSユーティリティです。ローカルで実行され、SSH認証情報をホスト上に保持したまま、MCP互換のツール(execute‑command、upload、download、read‑file、write‑file、job‑controlなど)を公開します。これにより、AIは秘密鍵やパスワードに触れることなく、サーバーに対してコマンド実行やファイル操作を依頼できます。

AI/MLワークフローにおける重要性

  • 安全なリモート実行 – LLM駆動のエージェントは、VMのプロビジョニング、ログ取得、コードデプロイなどの実作業が必要になることがよくあります。これらのアクションをMCP経由でルーティングすることで、モデルが生のSSH認証情報を取得することがなくなり、攻撃対象領域を削減できます。
  • 標準化されたインターフェース – MCPは、複数のAIコーディングアシスタント(Claude Code、Cursorなど)で使用されているプロトコルです。このサーバーはその仕様を実装しており、MCP対応のあらゆるアシスタントがリモートホストをファーストクラスのツールとして扱えるようにします。
  • きめ細やかな安全制御 – 内蔵のコマンドホワイトリスト/ブラックリスト、出力サイズ制限、パス制限により、オペレーターはAIを安全な操作(読み取り専用の診断、ログ収集など)のみに制限できます。
  • 複雑な環境のサポート – パスワード、鍵ベース、2FA認証をサポートし、踏み台サーバーやSOCKS/HTTPプロキシを経由した接続、さらにはテンプレートを使用したコンテナ内でのコマンド実行も可能です。

主な機能(READMEより)

機能 説明
複数の認証方法 パスワード、秘密鍵(パスフレーズ対応)、SSH‑agent、キーボードインタラクティブ2FA。
コマンドホワイトリスト / ブラックリスト 正規表現ベースの許可/拒否リスト。ホワイトリストが優先され、危険なパイプラインやリダイレクトを防止します。
転送モード exec(デフォルト、SFTP対応)および shell(永続シェル、踏み台サーバーに有用だがファイル転送不可)。
ファイル転送 SFTP経由の upload / download。再帰的なディレクトリサポートと設定可能な許可パスリスト。
ジョブ管理 job‑start、job‑status、job‑kill、job‑list。サーバー再起動後も存続する長時間実行バックグラウンドタスク用。
コマンドテンプレート 各コマンドをユーザー指定のテンプレート(例:sudo bash -c <quotedCommand> や docker exec …)でラップします。
マルチホスト設定 単一のJSON設定ファイル、--ssh JSON文字列、従来のカンマ区切り構文、または ~/.ssh/config から取得するカンマ区切りの --host 値。
プロキシサポート --proxy(または従来の --socksProxy)経由でのSOCKS5、HTTP、HTTPSプロキシ。
出力とリソース制限 最大stdout/stderrサイズ(デフォルト10 MiB)、コマンドごとのタイムアウト、キープアライブ設定、オプションのPTY割り当て。
ゼロインストール実行 npx @fangjunjie/ssh-mcp-server … で実行可能。グローバルインストール不要。

想定される用途

  • AIコーディングアシスタント(Claude Code、Cursor、GitHub Copilot Chatなど)でユーザーのインフラ上でコマンドを実行する必要がある場合。
  • DevOpsチームが自動診断、ログ収集、デプロイのためにLLM駆動のボットを構築する場合。
  • セキュリティ重視のユーザーが、AIモデルに対して限定的なSSH操作のみを公開したい場合。
  • 研究者が、クラウドやオンプレミスのサーバーと対話する自律型エージェントを実験する場合。

はじめ方(READMEより)

  1. インストール / 実行 – npx -y @fangjunjie/ssh-mcp-server …(-y フラグでnpmインストールプロンプトをスキップ)。
  2. MCP設定の作成 – サンプルJSONスニペット(例:単純なパスワード認証)をMCPクライアントの mcp.json にコピーします。
  3. ホワイトリストの追加(任意) – ls、cat、df などの安全なコマンドのみに制限します。
  4. ツールの呼び出し – AIアシスタントから以下のようなリクエストを送信します:
    { "tool": "execute-command", "params": { "cmdString": "ls -al", "connectionName": "dev" } }
    
  5. レスポンスの確認 – サーバーはコマンドの出力、終了コード、エラーメタデータを返します。

制限事項 / 今後の課題(READMEより)

  • レート制限機能は内蔵されていません。DoS攻撃を防ぐには外部のファイアウォールやリバースプロキシが必要です。
  • shell モードでは、永続シェル経由でSFTPが利用できないため、ファイル転送は無効になります。
  • 出力サイズ制限は接続ごとにハードコードされています。maxOutputBytes を 0 に設定するとガードが無効になりますが、推奨されません。
  • サーバーは、バックグラウンドジョブの実行にリモートホスト上の POSIX sh 環境を前提としています。

上記の情報はすべてプロジェクトのREADMEから直接引用したものであり、追加の機能は推測されていません。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト