tufantunc/ssh-mcp

MCP server exposing SSH control for Linux servers via Model Context Protocol.

SSH MCP Server — AIエージェントのための制御されたSSHアクセス

概要: AIアシスタント(Claudeなど)がSSH経由でリモートコンピュータ上でコマンドを実行できるようにする、セキュリティ重視の Model Context Protocol (MCP) server です。LLMとシェルを繋ぐブリッジであり、プライベートデータ、信頼できない入力、ネットワークアクセスという「致命的な三要素」が一点に集中するリスクを防ぐよう設計されています。

存在意義: AIに直接シェルアクセス権を与えることはリスクを伴います。プロンプトインジェクションにより悪意のあるコマンドが実行される可能性があるためです。このサーバーは、すべてのコマンドを分類し、ポリシーに基づいてチェックし、危険な操作には人間の承認を要求し、すべてをログに記録することで、多層的な制御を追加します。

主な機能:

  • 14種類のツール:リモート操作用(読み取り専用コマンド ls, cat、任意のコマンド、sudoコマンド、SFTPファイル転送(モデルコンテキスト経由およびディスクへの直接ストリーミング)、インタラクティブ/バックグラウンドセッション、プロセスシグナル送信)。
  • ポリシーエンジン: コマンドは「読み取り専用」「安全」「破壊的」「特権」に分類されます。ロール × ホストグループの行列によって許可範囲が決定されます。ブラックリストパターン(例:terraform destroy)を定義可能です。
  • ヒューマン・イン・ザ・ループ承認: 破壊的なコマンドには承認が必要です(approvalPolicy = "auto" を設定しない限り。本番環境では非推奨)。承認には有効期限を設定できます。
  • 監査ログ: すべてのコマンド、承認、転送が記録されます。
  • セキュリティ強化: 設定ファイルのパーミッションを強制(Linux/macOSは0600/0700必須、WindowsはACLをチェック)。ホストキーのピン留め、ProxyJump(踏み台)サポート、SSH CA証明書に対応。rootアカウントの使用は推奨されません。
  • セッション: インタラクティブセッションはコマンド間で状態(CWD、環境変数)を保持し、バックグラウンドセッションは長時間実行プロセス(tail -fなど)をポーリング可能です。
  • ストリーミングファイル転送: 大容量/バイナリファイルはモデルコンテキストを完全にバイパスし、ローカルディスクとリモートホスト間で直接転送されます(アトミック書き込み、サイズ/時間制限付き)。
  • ホスト側識別: AI_AGENT=ssh-mcp 環境変数を設定し、オペレーターがエージェントセッションを識別できるようにします(ホスト側で AcceptEnv が必要)。

仕組み: TOMLファイルでプロファイル(ホスト、ユーザー、認証方式、ロール、承認ポリシー)を設定します。サーバーはSSH(鍵、パスワード、agent、keychain)経由で接続します。エージェントがツールを呼び出すと、サーバーはコマンドを分類し、ポリシー行列とブラックリストを照合し、必要に応じて人間の承認を求め、実行します。すべての決定はログに記録されます。

ユースケース: AIアシスタントによる安全なリモート管理、監視付きの自動デプロイ、ログ監視・調査、およびLLMに無制限のシェルアクセス権を与えずにサーバーと対話させたいあらゆるシナリオ。

重要な注意点: READMEでは、リスクを軽減するものであり、完全に排除するものではないことを強調しています。rootアカウントに対して使用したり、本番プロファイルで auto 承認を使用したりしないでください。Linux、macOS、Windowsでテスト済みですが、Windowsではインタラクティブセッションやストリーミング転送に一部制限があります。

関連

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