META: Несмотря на то, что это особенность программного обеспечения безопасности (OpenSSH), оно явно не является функцией безопасности, поэтому его актуальность является пограничной. Это может лучше подойти для суперпользователя или сервера. Но я оставлю это избирателям.
В любом случае, блок кода в ssh.c
:
/* If we don't expect to open a new session, then disallow it */
if (options.control_master == SSHCTL_MASTER_NO &&
(datafellows & SSH_NEW_OPENSSH)) {
debug("Requesting no-more-sessions@openssh.com");
packet_start(SSH2_MSG_GLOBAL_REQUEST);
packet_put_cstring("no-more-sessions@openssh.com");
packet_put_char(0);
packet_send();
}
Как отмечено в ChangeLog, это отправляется, если одноранговый узел является достаточно новой версией и «мультиплексирование сеанса отключено» (options.control_master == SSHCTL_MASTER_NO
), который является значением по умолчанию и изменяется, только если вы указали -M
(до двух раз) или используйте -o
или файл конфигурации, чтобы установить controlmaster
(anycase) значение, отличное от false
или no
. Таким образом, вы должны указать любые опции, кроме -M
или -o controlmaster
.
Обратите внимание, что даже если одноранговый узел является старым и мы не можем на самом деле отправить опцию, по умолчанию клиент все равно фактически не будет выполнять мультиплексирование сеансов (если не взломан). Но помните, что «пересылка» (часто называемая «туннелированием»), которая также использует мультиплексирование каналов под ней, все еще может быть выполнена в соответствии с ее параметрами без какого-либо мультиплексирования сеансов.