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より)
- インストール / 実行 –
npx -y @fangjunjie/ssh-mcp-server …(-yフラグでnpmインストールプロンプトをスキップ)。 - MCP設定の作成 – サンプルJSONスニペット(例:単純なパスワード認証)をMCPクライアントの
mcp.jsonにコピーします。 - ホワイトリストの追加(任意) –
ls、cat、dfなどの安全なコマンドのみに制限します。 - ツールの呼び出し – AIアシスタントから以下のようなリクエストを送信します:
{ "tool": "execute-command", "params": { "cmdString": "ls -al", "connectionName": "dev" } } - レスポンスの確認 – サーバーはコマンドの出力、終了コード、エラーメタデータを返します。
制限事項 / 今後の課題(READMEより)
- レート制限機能は内蔵されていません。DoS攻撃を防ぐには外部のファイアウォールやリバースプロキシが必要です。
shellモードでは、永続シェル経由でSFTPが利用できないため、ファイル転送は無効になります。- 出力サイズ制限は接続ごとにハードコードされています。
maxOutputBytesを 0 に設定するとガードが無効になりますが、推奨されません。 - サーバーは、バックグラウンドジョブの実行にリモートホスト上の POSIX
sh環境を前提としています。
上記の情報はすべてプロジェクトのREADMEから直接引用したものであり、追加の機能は推測されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト