SSH

Ghostty の `+ssh` CLI アクションは、本物の `ssh` バイナリを exec する前に Ghostty 用にリモートセッションを準備する 、そのまま置き換えられる `ssh` ラッパーです。

ghostty +ssh は、そのまま置き換えられる ssh ラッパーです。Ghostty 用に リモートセッションを準備し、その後、あなたの引数を そのまま転送して本物の ssh バイナリを exec します。このコマンドは、リモート マシンが Ghostty terminfo ファイルを必要とするという、よくある 「先に鶏が立つか卵が立つか」問題を 解決します。

ghostty +ssh -- user@example.com

エイリアスとして使うと、シェルでの ssh 呼び出しはすべて +ssh を経由するようになります:

alias ssh='ghostty +ssh --'

あるいは、Ghostty の shell integration に ssh を自動的にラップさせること もできます。

完全なフラグのリファレンスは ghostty +ssh --help を実行してください。

Note

+ssh には Ghostty tip(将来の Ghostty 1.4.0)が必要です。 Ghostty 1.3.x にはありません。このページに記載している SSH shell integration 機能は 1.3.x に存在します。

機能

環境変数の転送

--forward-env フラグ(既定 true)は、SendEnv による COLORTERM、TERM_PROGRAM、TERM_PROGRAM_VERSION の 転送を要求し、リモートのシェルが Ghostty 内で動いていることを 検知できるようにします。

転送された変数がリモートセッションに届くには、リモートの sshd がその AcceptEnv 指令にその変数を列挙している必要があります。下記の リモート sshd 設定 を参照してください。

--forward-env=false で無効化します。

Terminfo インストール

Ghostty は xterm-ghostty を TERM の値として使いますが、多くのリモート ホストはまだ Ghostty の terminfo エントリーを同梱していません。詳しくは Terminfo を参照してください。

--terminfo フラグ(既定 true)は、最初に接続したときに リモートホスト上で tic を使って Ghostty terminfo エントリーを インストールします。インストールに成功した 場合(またはホストがすでにキャッシュされている 場合)、そのリモートセッションでは TERM が xterm-ghostty に設定されます。

インストールに 失敗した場合(たとえば、tic がリモートで 利用可能でない場合)、+ssh は警告を記録し、TERM=xterm-256color へ フォールバックします 。これは色とほとんどの端末機能を リモートで保持できる、広くサポートされている エントリーです。

--terminfo=false で無効化します。

インストールキャッシュ

成功した terminfo インストールはローカルキャッシュに 記録され、user@hostname を キーとします。よって同じホストへの以降の接続は、 インストール手順をスキップします。このキャッシュは +ssh-cache アクションによって 管理されています。

+ssh に --cache=false を 渡すと、キャッシュへの読み書きの両方を 1 度の呼び出しでバイパスします(キャッシュには触れません)。これは、 スクリプティング(「常に 再インストール」)や 問題のデバッグに 役立ちます。

代替の ssh 実行ファイル

+ssh は既定で、あなたの PATH 内の最初の ssh を exec します。 --ssh=PATH フラグは、代わりに固有の クライアントを指定できます:

ghostty +ssh --ssh=/opt/homebrew/bin/ssh -- user@example.com

これで、+ssh が別の OpenSSH ビルドやラッパークライアント を使うことを望む場合に役立ちます。このパスは実行ファイル である必要があります;でないと、+ssh は 、PATH のsshへ暗黙的に フォールバックせず失敗します。

+ssh-cache CLI アクション

ghostty +ssh-cache は、+ssh が使う terminfo キャッシュを管理します:

# List every cached destination.
ghostty +ssh-cache

# Show a specific destination, or every cached user on a host.
ghostty +ssh-cache user@example.com
ghostty +ssh-cache example.com

# Manually mark a destination as cached (e.g. after installing
# terminfo by hand).
ghostty +ssh-cache --add=user@example.com

# Force the next connection to reinstall terminfo on a destination.
ghostty +ssh-cache --remove=user@example.com

# Remove cache entries older than a given age (s, m, h, d, w, y).
ghostty +ssh-cache --prune=30d

# Clear the entire cache.
ghostty +ssh-cache --clear

宛先は位置指定で検索されます:user@hostname はその 厳密なエントリーを表示し、hostname だけではその ホスト上のキャッシュされているすべてのユーザーを表示します。何にもマッチしない検索は 非ゼロステータスで終了します。

--remove は、1 つの宛先への 再インストールを強制するのに推奨される方法です: キャッシュエントリーを落とすと、次回成功した接続が 再び埋めます。キャッシュ全体を バイパスしたい場合は +ssh --cache=false を使ってください。

キャッシュエントリーは常にuser@hostnameをキーとします。ここで、user は ssh のユーザー(既定では ローカルの$USER)で、hostname は解決済みのリモートホスト(HostName後 、ProxyJump後)であり、 ~/.ssh/config からのエイリアスでは ありません。

完全なフラグのリファレンスは ghostty +ssh-cache --helpを実行してください。

Shell Integration

Ghostty のshell integrationは、 sshをあなたのインタラクティブシェルでラップし、ghostty +sshを透明 に 呼び出せるようにできます。既定では無効です。有効化には shell-integration-features を使います:

shell-integration-features = ssh-env,ssh-terminfo
  • ssh-env は環境変数転送を有効化します( --forward-env=true を +ssh に渡します)。
  • ssh-terminfo はリモート terminfo インストールを有効化します( --terminfo=true を +ssh に渡します)。

このラッパーはssh という名前の小さな シェル関数で、これらの機能 フラグを正しい +ssh コマンドラインオプションに変換してから 、引数を転送します。

制限

ラッパーはシェル関数なので、子 プロセスには 継承されません。以下の 場合、ラッパーは 使用されません:

  • ./script.sh や sh script.sh として実行されるスクリプト。 それぞれのスクリプトは 、関数を 継承しない新しい非対話シェルで 実行されます。代わりに、スクリプトを現在のシェルに読み込んで (たとえば source script.sh や . script.sh)、関数が定義さ れているシェル プロセスで実行 されるようにしてください。
  • 自分自身で ssh を 起動するラッパーツール、たとえば aws ec2-instance-connect ssh、gcloud compute ssh、mosh、 rsync -e ssh、ssh 上の git、scp 、sftp。これらは ssh(あるいは ssh のようなバイナリ)を直接 呼び出し、シ ェルの関数テーブルは 参照しません。
  • さらに全般的 に、非対話シェルとサブシェル。これにはMakefile の recipe、cron ジョブ、他のプログラムでの命令置換が含まれ ます。

こうしたケースでは、ghostty +ssh を直接 呼ぶか、下記の 説明に従って~/.ssh/config を設定してください。

手動 ~/.ssh/config 設定

シェルラッパーが対応できない ケースでは、SetEnv と SendEnv を~/.ssh/config に直接設定できます。これは、 すべての ssh 呼び出しに適用されます:

# ~/.ssh/config
Host example.com
  SetEnv TERM=xterm-256color
  SendEnv COLORTERM TERM_PROGRAM TERM_PROGRAM_VERSION

Note

SetEnv は OpenSSH 8.7 以降が必要です。手動での Ghostty terminfo の転送は Terminfo で行います。

Note

リモートホストにすでに xterm-ghostty の terminfo エントリーが インストールされている場合、SetEnv TERM=xterm-256color 指示は TERM を 不必要にダウングレードします。terminfo エントリーを欠くホストにのみ使用してください。

リモート sshd 設定

環境変数転送は SendEnv を使いますが、これは_要求_でしかありません。リモートの sshd は、AcceptEnv 指令に 列挙されていない変数は すべて黙って破棄します。COLORTERM、TERM_PROGRAM 、TERM_PROGRAM_VERSION をリモートセッションに届かせたい場合は 、リモート側の sshd_config に次のようなものが 必要です:

# /etc/ssh/sshd_config on the remote host
AcceptEnv COLORTERM TERM_PROGRAM TERM_PROGRAM_VERSION

これは Ghostty ではなくリモートホストの 特性です。管理下・ 強化されたサーバーの多くは当該項目を持たないかもしれません。TERM 自体は常にssh によって転送され 、AcceptEnv の影響を受けません。