это относится к под-оболочке внутри основной оболочки
сравнить
echo "a" $BASH_SUBSHELL "b" $SHLVL
с
( echo "a" $BASH_SUBSHELL "b" $SHLVL )
или
( ( echo "a" $BASH_SUBSHELL "b" $SHLVL ) )
это может быть полезно внутри функции, если вы установите env var.
Решение было предоставлено в комментарии Steeldriver, который предложил мне исключить bastion.my.company.com из сопоставления хоста с подстановочными знаками.
Например,
ServerAliveInterval 150
ServerAliveCountMax 6
ControlMaster auto
ControlPath /tmp/ssh_%h_%p_%r
Host *.my.company.com !bastion.my.company.com
User myname
IdentityFile /home/myname/.ssh/mykey.pem
ProxyCommand ssh bastion -W %h:%p
ForwardAgent yes
Host bastion
Hostname bastion.my.company.com
User myname
IdentityFile /home/myname/.ssh/mykey.pem
ControlPath / tmp / ssh_% h_% p_% r
Очень плохая идея помещать ваши сокеты Control в «общедоступный» / tmp
. Он должен находиться в каком-то безопасном каталоге, к которому другие пользователи не могут получить доступ.
Поведение выглядит так, как будто было изменено значение по умолчанию CanonicalizeHostname
. Что в вашей системе установлено по умолчанию? Попробуйте отключить его: CanonicalizeHostname no
.
Настройка LogLevel DEBUG3
также является хорошим началом для устранения проблем с ssh
. Можете ли вы установить эту опцию в своей конфигурации и публиковать журналы?