Как выйти из основного процесса управления OpenSSH без использования lsof или fuser?

Если вы не связаны, в частности, с lightdm , затем рассмотрите возможность установки nodm , который специально разработан для работы в киосках такого типа. Я использую его на нескольких машинах (интерфейс MythTV и веб-браузер) в течение многих лет без проблем.

5
02.08.2018, 00:08
2 ответа

Это работает для меня, используя только файл сокета для мастера управления:

$ ssh -o ControlPath=~/.ssh/<controlfile> -O check <bogus arg>

ПРИМЕЧАНИЕ:Вы также можете использовать ssh -S ~/.ssh/<controlfile>..., что является немного более короткой формой приведенного выше.

Пример

Вот пример, когда я уже установил соединение с удаленным сервером:

$ ssh -S ~/.ssh/master-57db26a0499dfd881986e23a2e4dd5c5c63e26c2 -O check blah
Master running (pid=89228)
$

И с ним отключен:

$ ssh -S ~/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74 -O check blah
Control socket connect(/Users/user1/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74): No such file or directory
$

Если бы он все еще был подключен, это заставило бы его немедленно выйти:

$ ssh -S ~/.ssh/master-66496a62823573e4760469df70e57ce4c15afd74 -O exit blah
Exit request sent.
$

Мне непонятно, но потенциально это может быть ошибкой в ​​ssh, требующей дополнительного аргумента в конце, хотя blahне имеет смысла в контексте переключателей, которые я использую.

Без этого дает мне это:

$ ssh -S ~/.ssh/master-57db26a0499dfd881986e23a2e4dd5c5c63e26c2 -O check
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port]
           [-Q cipher | cipher-auth | mac | kex | key]
           [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] [user@]hostname [command]

Информация о версии

ОС X
$ ssh -V
OpenSSH_6.9p1, LibreSSL 2.1.8
CentOS 7.x
$ ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips  26 Jan 2017

Я подтвердил, что в обеих этих версиях требовался дополнительный фиктивный аргумент.

ОБНОВЛЕНИЕ #1

Я сообщил об этом как о потенциальной ошибке в OpenSSH восходящей ветке, и они ответили следующим образом:

Yes - this is intentional.

ControlPath may contain %-expansions that need a hostname to expand fully.

We could conceivably check to see whether ControlPath actually needs this and make the hostname optional but 1) ControlPaths that use %h are common and 2) I'd rather not make the argument parsing code more of a maze than it already is.

Ссылки

9
27.01.2020, 20:39

Я написал утилиту, упрощающую управление соединениями SSH ControlMaster. Называетсяcmc:TimidRobot/cmc :Контроллер ControlMaster -Упрощает управление соединениями SSH ControlMaster .

0
27.01.2020, 20:39

Теги

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