Communityコーディング&開発github.com

sabiviji/remote-work-ssh

SSH 経由でリモートマシンに接続し、エイリアス、鍵、またはパスワード認証を使用してリモートプロジェクトで作業できるようにします。ユーザーがサーバーへの SSH 接続、リモートマシンでのコマンド実行、リモートプロジェクトのファイル確認や編集、リモートプロジェクトでの作業を依頼した場合に使用します。

remote-work-ssh とは?

このスキルは、エイリアス、秘密鍵、またはパスワード認証を使用してリモートマシンへの SSH 接続を安全かつ確実に確立できるようにします。接続設定はプロジェクト固有の `ssh.md` ファイルで定義され、スキルは各セッションの開始時にこのファイルを読み取ります。認証方式の検証、安全な接続の確立、そしてリモートプロジェクトディレクトリ内でのコマンド実行の全手順をガイドします。`sshpass` や環境変数などのツールを利用してパスワードベースの認証を安全に処理する一方、鍵ベースの認証では `IdentitiesOnly=yes` を強制します。このスキルは Claude Code、Cursor、Codex などのさまざまな AI エージェントと互換性があり、開発者は危険なコマンドの前の確認や、機密情報の漏洩を防ぐための厳格なセーフティルールの恩恵を受けられます。

対応✓Claude Code~Codex CLI~Cursor✓OpenCode
npx skills add https://github.com/sabiviji/remote-work-ssh/tree/HEAD/.agents/skills/remote-work-ssh

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

SSH 経由のリモートワーク

接続の詳細はプロジェクトフォルダの ssh.md にあります。リモートセッションの前には必ずこれを読んでください。ホスト、ユーザー、ポート、鍵のパス、パスワードを推測しないでください。

アクティベートするタイミング

  • ユーザーがリモートマシンに接続、ログイン、または何かを実行するよう依頼した場合
  • ユーザーがリモートプロジェクトの確認、編集、ビルド、テストを依頼した場合
  • ユーザーがサーバー、VPS、リモートホストに言及し、SSH アクセスを期待している場合

ステップ 1: ssh.md を見つける

プロジェクトフォルダは git rev-parse --show-toplevel で取得し、失敗した場合はカレントディレクトリを使用します。ssh.md は常に <プロジェクトフォルダ>/ssh.md にあります。

もし存在しない場合は、テンプレートから作成し、ユーザーに記入するよう伝えます:

  1. ssh.example.md を見つけます。これはこのスキルのフォルダにあり、エージェントに依存します。以下のパスを順にチェックし、最初に存在するものを使ってください: .agents/skills/remote-work-ssh/、.claude/skills/remote-work-ssh/、.opencode/skills/remote-work-ssh/、~/.agents/skills/remote-work-ssh/、~/.claude/skills/remote-work-ssh/、~/.config/opencode/skills/remote-work-ssh/。どれも存在しない場合は find ~ -path '*remote-work-ssh*' -name ssh.example.md 2>/dev/null | head -n 1 を実行します。
  2. それを <プロジェクトフォルダ>/ssh.md にコピーします。
  3. 不足している場合は ssh.md をプロジェクトの .gitignore に追加します。必要に応じて .gitignore を作成します。
  4. 停止し、ユーザーに ssh.md を記入するよう伝えます。

ステップ 2: 設定の検証

ssh.md には 1 つの YAML ブロックが含まれています。以下のフィールドを確認してください:

  • auth は alias、key、または password である必要があります。
  • remote_project_path が設定されている必要があります。
  • 選択した方式に必要なフィールドが設定されている必要があります:
auth必須フィールド
aliasalias
keyhost、user、identity_file(port のデフォルトは 22)
passwordhost、user、password_env(port のデフォルトは 22)

必須フィールドが欠けている場合、または auth が不明な場合は、停止してどのフィールドが間違っているかを正確に報告してください。他の方式にフォールバックしないでください。

ステップ 3: 接続

alias

まずエントリを解決し、次に接続します:

ssh -G <alias> | grep -E '^(hostname|user|port) '
ssh -o BatchMode=yes <alias> 'hostname && whoami'

key

  • identity_file が存在することを確認します。存在しない場合は停止します。
  • その鍵のみを使用します:
ssh -o BatchMode=yes -o IdentitiesOnly=yes -i <identity_file> -p <port> <user>@<host> 'hostname && whoami'
  • proxy_jump が設定されている場合は、-J <proxy_jump> を追加します。

password

  • command -v sshpass で sshpass がインストールされているか確認します。ない場合は停止し、ユーザーにインストールを促します。
  • password_env で指定された環境変数が設定されているかを、その値を出力せずに確認します。
  • SSHPASS 環境変数と -e オプションを介して sshpass に値を渡します。パスワードをコマンドライン引数や出力に含めないでください。
  • 鍵ベースの試行を無効にして、パスワードのみを使用するようにします:
SSHPASS="$(printenv <password_env>)" sshpass -e ssh -o PubkeyAuthentication=no -o PreferredAuthentications=password -p <port> <user>@<host> 'hostname && whoami'
  • proxy_jump が設定されている場合は、-J <proxy_jump> を追加します。
  • ここでは BatchMode=yes を使用しないでください。パスワード認証が無効になるからです。

ホスト鍵(すべての方式)

  • ホスト鍵が不明または変更されている場合は、停止します。指紋を表示し、ユーザーに確認を求めます。
  • StrictHostKeyChecking=no や、検証をスキップする類似のオプションを設定しないでください。

ステップ 4: リモートプロジェクトで作業する

  • すべてのコマンドを remote_project_path 内で実行します。例: ssh ... 'cd <remote_project_path> && <command>'。パスは引用符で囲みます。
  • リモートマシンにツールが存在することを前提とする前に、そのマニフェストを確認するか command -v <ツール> を実行します。
  • ユーザーが依頼しない限り、remote_project_path の外に書き込まないでください。

セーフティルール

  • rm -rf、強制プッシュ、データベース削除、ディスク操作、サービス再起動などの破壊的なコマンドの前に確認を求めます。
  • パスワード、鍵の内容、トークンを決して出力、コピー、ログ、コミットしないでください。
  • 認証情報をプロジェクトの ssh.md または環境以外のファイルに保存しないでください。
  • ユーザーが依頼していないコマンドをリモートマシンで実行しないでください。

サポート外の操作

  • 追跡対象ファイルやこのスキルへのパスワードの保存
  • ユーザーに代わってのインタラクティブな MFA やワンタイムコードの処理
  • ホスト鍵検証の無効化
  • ssh.md で定義されていないホストへの接続

関連スキル