Почему не просто используют %h в опции OpenSSH ssh's ControlPath?

Проблема решена! Преступник... hwclock.

Как я сказал выше, мехи конфигурация. для моего hwclock:

clock="UTC"
clock_systohc="NO"
clock_hctosys="NO"
clock_args=""

но у меня есть эта (глупая) строка в /etc/local.d/baselayout1.start:

hwclock --hctosys

С этой конфигурацией вот время даты после начальной загрузки:

gentoo ~ # hwclock 
Wed 21 Mar 2012 10:29:57 AM ICT  -0.134053 seconds
gentoo ~ # hwclock --utc
Wed 21 Mar 2012 05:30:01 PM ICT  -0.928500 seconds
gentoo ~ # date
Wed Mar 21 10:30:03 ICT 2012
gentoo ~ # date --utc
Wed Mar 21 03:30:06 UTC 2012

hwclock и date вывод является правильным, hwclock --utc на 7 часов позже, чем, и date --utc на 7 часов ранее, чем.

Удалите эту строку hwclock --hctosys в /etc/local.d/baselayout1.start и изменение clock_systohc и clock_hctosys кому: "YES" в /etc/conf.d/hwclock решите проблему:

gentoo ~ # hwclock 
Wed 21 Mar 2012 03:33:43 AM ICT  -0.404693 seconds
gentoo ~ # hwclock --utc
Wed 21 Mar 2012 10:33:46 AM ICT  -0.418345 seconds
gentoo ~ # date
Wed Mar 21 10:33:48 ICT 2012
gentoo ~ # date --utc
Wed Mar 21 03:33:54 UTC 2012
12
02.09.2013, 17:57
2 ответа

"Я думал, что несколько сессий должны совместно использовать тот же сокет с соединением с тем же хостом".

Они могут. Однако обратите внимание на это, если Вы соединяетесь с хостом с помощью существующего соединения через ControlPath, независимо от которого пользователя Вы намереваетесь войти в систему как, Вы будете зарегистрированы как исходный пользователь соединения. Например, без установленного соединения к "где-нибудь":

ssh -o ControlPath=~/.ssh/%h -o ControlMaster=yes bob@somewhere

Этой сессией является bob@somewhere.

ssh -o ControlPath=~/.ssh/%h -o ControlMaster=no sue@somewhere

Этой сессией также будет bob@somewhere, потому что Вы использовали тот же ControlPath и установили ControlMaster=no; если ControlMaster=yes, Вы были бы зарегистрированы, как предъявляют иск, но ssh проигнорирует Ваш аргумент ControlPath, как подразумевается в man ssh_config:

Дополнительные сессии могут соединиться с этим сокетом с помощью того же ControlPath с набором ControlMaster к 'нет'.

Как доказательство этого, если ControlMaster=yes в обоих случаях, когда боб выходит из сокета ControlPath ~/.ssh/somewhere исчезнет даже при том, что "предъявить иск" сессия все еще работает, означая, что предъявить иск сессия никогда не использовала тот сокет.

Так, если Вы хотите использовать то же соединение, просто %h прекрасен, но остерегайтесь этого, Вы не можете совместно использовать соединение, поскольку несколько различных удаленных пользователей - ssh не позволят Вам.

12
27.01.2020, 19:55
  • 1
    Большое спасибо. Перед Вашим тщательно продуманным ответом я пропустил факт, что не возможно совместно использовать основной сокет клиента между различными удаленными пользователями без одновременно второго удаленного пользователя, принимающего идентификационные данные первого. –  Tim Friske 02.09.2013, 22:24

У Вас могли быть многочисленные пользователи и несколько портов, используемых даже для того же сервера. Самостоятельно, я соединяюсь с сотнями систем на интранет компании, большинство имеет многочисленных пользователей с различными функциями или серверами приложений. Доступ к Усера очень отличается от доступа к userB, и основное соединение должно было бы отличаться. Более кратко, если необходимо было работать:

$ ssh -n -o ControlMaster=auto -o ControlPath=~/.cache/ssh/mux/%h -l userA localhost sleep 10 & # create the master connection and background it
$ ssh -o ControlMaster=auto -o ControlPath=~/.cache/ssh/mux/%h -l userB localhost whoami
userA

Как Вы видите, мы не получаем сессию OpenSSH с userB, но оригинал с Усера. Это означает, что корневой каталог, полномочия и даже сама аутентификация не то, что ожидается. Используя это, если необходимо было попытаться удалить файл в каталоге userB, затем a) это мог быть неправильный файл и b) это могли быть неправильные полномочия.

Если Вы никогда не будете соединяться с больше, чем отдельный пользователь ни на каком сервере с помощью единственного порта, то да, с помощью %h мог быть достаточно. В Вашем ~/.ssh/config файл, Вы хотели бы использовать:

ControlMaster=auto  # use existing or create a master connection
ControlPath=~/.cache/ssh/mux/%h
ControlPersist=yes

С ControlPersist опция, основное соединение остается открытым в фоновом режиме, пока не уничтожено или завершено с ssh -O exit. Это - хорошая set-it-and-forget-it функция.

Но если бы существует возможность соединения больше чем с одним пользователем на каком-либо хосте, то Вы хотели бы что-то более безопасное:

ControlMaster=auto
ControlPath=~/.cache/ssh/mux/%r@%h:%p
ControlPersist=yes
5
27.01.2020, 19:55
  • 1
    я все еще смущен. Я пытался разъяснить сценарий конфигурации и мое намерение в, "Я хочу к" абзацам. Кто-либо из Вас мог ответить на мой вопрос более точно с этой дополнительной информацией? –  Tim Friske 02.09.2013, 18:34

Теги

Похожие вопросы