Почему «ssh_config (5)» страница руководства рекомендуют ControlPath
вариант должен содержать , по крайней мере %h
, %p
и %r
заполнители для того , чтобы однозначно идентифицировать каждую общую связь?
Я думал, что несколько сессий должны совместно использовать один сокет с подключением к одному и тому же хосту. Разве не имеет смысла иметь такое простое определение, как:
ControlPath ~/.cache/ssh/mux/%h
Вместо чего-то вроде:
ControlPath ~/.cache/ssh/mux/%r@%h:%p
В моем понимании с первым определением одно соединение совместно используется несколькими сеансами с разными удаленными пользователями, к одному и тому же удаленному хосту, на разных удаленных портах.
Я хочу иметь первое определение в разделе хоста по умолчанию, так что достаточно сказать ssh -o ControlMaster=no
.
Я хочу разделить соединение с одним и тем же удаленным хостом между всеми сеансами, инициированными одним и тем же локальным пользователем, независимо от удаленного пользователя и удаленного порта. Сокет главного клиента должен находиться под домашним каталогом локального пользователя.
источник
Ответы:
Они могут. Тем не менее, обратите внимание, что если вы подключаетесь к хосту через существующее соединение
ControlPath
, независимо от того, от какого пользователя вы собираетесь войти, вы будете зарегистрированы как исходный пользователь соединения. Например, без установленной связи с «где-то»:Эта сессия Боб @ где-то.
Этот сеанс также будет где-то bob @, потому что вы использовали тот же ControlPath и set
ControlMaster=no
; ЕслиControlMaster=yes
вы войдете в систему как sue, но ssh проигнорирует ваш аргумент ControlPath, как указано вman ssh_config
:Как доказательство этого, если
ControlMaster=yes
в обоих случаях при выходе из bob сокет ControlPath~/.ssh/somewhere
исчезнет, даже если сеанс sue все еще выполняется, то есть сеанс sue никогда не использовал этот сокет .Итак, если вы хотите использовать одно и то же соединение,
%h
это нормально, но имейте в виду, что вы не можете использовать соединение как несколько разных удаленных пользователей - ssh не позволит вам.источник
Вы можете использовать несколько пользователей и несколько портов даже для одного и того же сервера. Я подключаюсь к сотням систем в интрасетях компании, большинство из которых имеют несколько пользователей с различными функциями или серверами приложений. Доступ к userA сильно отличается от доступа к userB, и мастер-соединение должно быть другим. Более кратко, если вы должны были бежать:
Как видите, мы получаем не сеанс OpenSSH с userB, а оригинал с userA. Это означает, что домашний каталог, разрешения и даже сама аутентификация не соответствуют ожиданиям. Используя это, если вы пытаетесь удалить файл в каталоге userB, то а) это может быть неправильный файл и б) это могут быть неправильные разрешения.
Если вы никогда не будете подключаться к более чем одному пользователю на одном сервере, используя один порт, тогда да, использования
%h
может быть достаточно. В вашем~/.ssh/config
файле вы хотели бы использовать:С этой
ControlPersist
опцией главное соединение остается открытым в фоновом режиме, пока не будет разорвано или прервано с помощьюssh -O exit
. Это хорошая возможность установить и забыть.Но если есть любая возможность подключения к более чем одному пользователю на любой хост, то вы хотите что - то более безопасным:
источник