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 で無効化します。
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 は既定で、あなたの PATH 内の最初の ssh を
exec します。
--ssh=PATH フラグは、代わりに固有の
クライアントを指定できます:
ghostty +ssh --ssh=/opt/homebrew/bin/ssh -- user@example.com
これで、+ssh が別の OpenSSH
ビルドやラッパークライアント
を使うことを望む場合に役立ちます。このパスは実行ファイル
である必要があります;でないと、+ssh は
、PATH のsshへ暗黙的に
フォールバックせず失敗します。
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を実行してください。
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 を設定してください。
シェルラッパーが対応できない
ケースでは、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 エントリーを欠くホストにのみ使用してください。
環境変数転送は 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 の影響を受けません。