Skip to content

Warp から Cisco ルータへ SSH した際のエラーを回避する

WarpiTermWezTerm と同じターミナルソフトウェアです。 現時点では macOS 版しか提供されていませんが、Warp is coming to Windows というページがあり、いずれ Windows 版も提供されるようです。 公式サイトのトップページには以下の記載あり、「AI 連携」を特徴にしています。

Become a command line power user on day one. Warp combines AI and your dev team’s knowledge in one fast, intuitive terminal.

Compare terminal tools というページもあります。 他のターミナルソフトウェアと Warp の比較がされており、例えば iTerm2 vs. Warp という比較もあります。

ただ、デフォルトの状態では Warp から (Linux 相手ではほぼ問題ありませんが) Cisco ルータなどへ SSH アクセスした際、エラーになることがあるようです。 この問題は GitHub の Invalid autocommand in SSH configuration #2836 で触れられていますが、この問題の解決方法をメモしておきます。

検証環境

対象 バージョン
macOS 15.2
Warp v0.2025.01.22.08.02.stable_05

Cisco ルータなどへ SSH アクセスした場合のエラー

Warp から Cisco ルータへ SSH アクセスした際、以下のエラーになってしまいました。

# ssh 10.0.0.1
Warning: Permanently added '10.0.0.1' (RSA) to the list of known hosts.



Line has invalid autocommand "
export TERM_PROGRAM='WarpTerminal'
hook=$(printf "{\"hook\": \"SSH\", \"value\": {\"socket_path\": \"~/.ssh/173810237129194\", \"remote_shell\": \"%s\"}}" "${SHELL##*/}" | command -p od -An -v -tx1 | command -p tr -d " \n")
printf '^[]9278;d;%s' $hook
if"Connection to 10.0.0.1 closed by remote host.
Connection to 10.0.0.1 closed.

回避方法

Warp の SettingsFeaturesWarp SSH Wrapper はデフォルトで有効になっています。

file

これを無効化します。

file

これで SSH エラーが発生しなくなりました。 この変更は新規のセッション以降で有効化される為、既存のセッションは閉じ、新規セッションで Cisco ルータへ SSH アクセスするとエラーが発生しなくなりました。

# ssh 10.0.0.1
Warning: Permanently added '10.0.0.1' (RSA) to the list of known hosts.



Router#

Warp SSH Wrapper を無効化した副作用

Warp SSH Wrapper については公式サイトの Implementation で以下のように説明されています。

We create a wrapper (around /usr/bin/ssh) to set up the shell for Warp's feature set. We authenticate normally using /usr/bin/ssh, and bootstrap the remote shell to work with Warp Blocks and the Input Editor. You can opt out of this functionality by invoking command ssh directly.

  • Warp takes over the prompt which enables us to build a modern input editor.
  • Warp configures histcontrol to ignore commands with leading spaces. We do this so our bootstrapping code does not clutter the history.

You can see the SSH wrapper by using which warp_ssh_helper in zsh, type warp_ssh_helper in bash.

Note: The ssh wrapper is only initialized on your local machine. We don’t currently support bootstrapping nested ssh sessions.

Warp SSH Wrapper は「SSH アクセスしたリモートのコンピュータでも Warp の機能 (ブロック など) が利用出来る」という機能です。 今回の回避策ではこの機能を無効化してしまう為、SSH でリモートアクセスした先のコンピュータでは Warp の機能を利用出来なくなります。