3行で解説
いつの間にか、OpenSSHで接続後に『~C』を入力してもコマンドラインが開かず「commandline disabled」が表示されるようになった。
OpenSSH 9.2にてデフォルト"no"で追加されたEnableEscapeCommandline
が原因。
『~C』でコマンドラインを開くよう戻すには、ssh_configにEnableEscapeCommandline yes
を書く。
長めに解説
man sshにあるとおり、OpenSSHでは接続後に『~C』を入力することでコマンドラインを開くことができる。
ssh hoge-server -L3306:127.0.0.1:3306
のように、SSH接続時にSSHポート転送オプションを指定しなくても、SSH接続後にポート転送を開始、終了できる便利なもの。
nissy@db-server:~$ ~C
ssh> -L3306:127.0.0.1:3306
Forwarding port.
nissy@db-server:~$ ~C
ssh> -KL3306
Canceled forwarding.
※ 実際には『~C』は表示されない。
※ 1文字も入力していないコマンドプロンプトでのみ有効なので、何か1文字でも入力した場合は何も入力せずEnterキーを押して次のプロンプトで『~C』を押す。
OpenSSH 9.2でEnableEscapeCommandline
というオプションが追加され、デフォルトは"no”。
これが"no"だと件の『commandline disabled』が表示される。
Potentially-incompatible changes
--------------------------------
* ssh(1): add a new EnableEscapeCommandline ssh_config(5) option that
controls whether the client-side ~C escape sequence that provides a
command-line is available. Among other things, the ~C command-line
could be used to add additional port-forwards at runtime.
This option defaults to "no", disabling the ~C command-line that
was previously enabled by default. Turning off the command-line
allows platforms that support sandboxing of the ssh(1) client
(currently only OpenBSD) to use a stricter default sandbox policy.
元に戻すというか『~C』でコマンドラインを開くようにするには、ssh_config($HOME/.ssh/config)にEnableEscapeCommandline yes
を書く。