ninigi

SSH トンネルとファイル転送のための薄い CLI。実処理は OpenSSH と rsync に任せます。

必要環境

手元の SSH 設定をそのまま使います。

  • ssh(OpenSSH)
  • rsync
  • 既存の ~/.ssh/config(例: Host myhost)

インストール

ソースから入れる場合:

cargo install --path .
# → ~/.cargo/bin/ninigi

または make install。

トンネル

ssh -N -L をホストとポート指定だけで立ち上げます。

# いままで: ssh -N -L 5173:127.0.0.1:5173 myhost
ninigi up myhost 5173
ninigi up myhost 5173 3000:8080
ninigi up grafana   # ssh config の LocalForward を利用

ninigi ls
ninigi down myhost
ninigi down                      # 全部止める

ファイル転送

デフォルトの宛先は /tmp です。

# remote 省略 → /tmp/<basename>
ninigi push myhost ./app
# → myhost:/tmp/app

ninigi pull myhost /tmp/app
# → ローカル /tmp/app

ninigi push myhost ./app ~/work/app
ninigi pull --dry-run myhost ~/work/app ./

SSH・ホスト・設定

接続と設定の初期化:

ninigi ssh myhost
ninigi hosts
ninigi init   # ~/.config/ninigi/config.toml
[defaults]
remote_dir = "/tmp"
local_dir = "/tmp"

[presets.vite]
host = "myhost"
ports = ["5173"]

[hosts.myhost]
remote_dir = "/tmp"

ポート記法

短い指定から待ち受け IF まで。

指定 意味
5173 ローカル 5173 → リモート 5173
5173:3000 ローカル 5173 → リモート 3000
0.0.0.0:5173 全 IF 待ち受け

状態ファイル

  • 設定: ~/.config/ninigi/config.toml
  • トンネル PID: ~/.local/state/ninigi/tunnels.json(macOS では ~/Library/Application Support/ninigi/ 等)