先に結論
~/.screenrc の shell はフルパスにしましょう
~/.screenrc
shell /bin/zsh
環境
fumidai を経由して、server に接続していた
local -> fumidai -> server
~/.ssh/cofig はこんな感じ
~/.ssh/cofig
Host fumidai
Hostname xx.xx.xx.xx
Host server
HostName yy.yy.yy.yy
ForwardAgent yes
ProxyCommand ssh fumidai -W %h:%p
ある日から、急にこんなエラーが...
$ ssh server
zsh: No such file or directory
ssh_exchange_identification: Connection closed by remote host
最初、zsh が、何かを探して、"No such file or directory" を出したのかと思っていたけれど、
zsh そのものが、"No such file or directory" だった
openssh では、環境変数 SHELL を参照するが、そこの値が絶対パス で無いため、問題になったらしい
確かにローカル環境で、環境変数 SHELL を確認すると、コマンド名のみになっている
$ echo $SHELL
zsh
- $PATH は参照しないのね
GNU screen のバージョンで、$SHELL の値が変わる
とはいえ、最近そんな環境変数をいじった覚えもないし...
そもそも、環境変数 $SHELL は自前でいじらないで、screen に任せてるし...
~/.screenrc
shell zsh
screen も最近、Mac のデフォルトのやつから、Homebrew で最新のにしたばかりだし...
まさか...
Mac のデフォルトの screen
$ /usr/bin/screen -v
Screen version 4.00.03 (FAU) 23-Oct-06
$ /usr/bin/screen
$ echo $SHELL
/bin/zsh
$ ls /bin/zsh
/bin/zsh*
$ ssh server
正常に踏み台 ssh 接続できる
Homebrew で入れた screen
$ /usr/local/bin/screen -v
Screen version 4.02.01 (GNU) 28-Apr-14
$ /usr/local/bin/screen
$ echo $SHELL
zsh
$ ls zsh
ls: zsh: No such file or directory
$ ssh server
zsh: No such file or directory
ssh_exchange_identification: Connection closed by remote host
orz
~/.screenrc の shell はフルパスに変更
~/.screenrc
shell /bin/zsh
$ screen -v
Screen version 4.02.01 (GNU) 28-Apr-14
$ screen
$ echo $SHELL
/bin/zsh
$ ls /bin/zsh
/bin/zsh*
$ ssh server
踏み台 ssh 接続できた!!