Я собираюсь запустить второй sshd
экземпляр на непривилегированном порту (например, 2222) с моим собственным файлом конфигурации.
Очевидно, что sshd
процесс не может setuid
войти в систему, поскольку другие пользователи, кроме того, кто запускает sshd
демон, явно невозможны.
Однако возможно ли иметь работающего sshd
демона, который будет работать для текущего работающего пользователя? Для моего случая использования это было бы хорошо.
Я попытался загрузить sshd
экземпляр с моим собственным файлом конфигурации и ключом хоста, и sshd
процесс запускается (никаких жалоб на то, что он не root, как некоторые команды), однако, когда я пытаюсь подключиться к этому порту, sshd
процесс умирает.
$ /usr/sbin/sshd -dD -h .ssh/id_rsa -p 2222
debug1: sshd version OpenSSH_5.6p1
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: setgroups() failed: Operation not permitted
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-dD'
debug1: rexec_argv[2]='-h'
debug1: rexec_argv[3]='.ssh/id_rsa'
debug1: rexec_argv[4]='-p'
debug1: rexec_argv[5]='2222'
debug1: Bind to port 2222 on 0.0.0.0.
Server listening on 0.0.0.0 port 2222.
debug1: Bind to port 2222 on ::.
Server listening on :: port 2222.
debug1: fd 6 clearing O_NONBLOCK
debug1: Server will not fork when running in debugging mode.
debug1: rexec start in 6 out 6 newsock 6 pipe -1 sock 9
debug1: inetd sockets after dupping: 5, 5
Connection from ::1 port 57670
debug1: Client protocol version 2.0; client software version OpenSSH_5.6
debug1: match: OpenSSH_5.6 pat OpenSSH*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_5.6
debug1: list_hostkey_types:
No supported key exchange algorithms
debug1: do_cleanup
debug1: do_cleanup
debug1: audit_event: unhandled event 12
debug1: setgroups() failed: Operation not permitted
Линия явно выпирает, но он не умрет , пока он не пытается принять соединение.
UsePam
вno
.В качестве обновления этого потока OpenSSH в версии 7.5 устарел с помощью опции UsePrivilegeSeparation, что сделало невозможным отключение разделения привилегий. Похоже, что запуск SSHD от имени пользователя теперь невозможен.
См. Https://www.openssh.com/releasenotes.html.
источник
Я подробно проверил возможность запуска службы sshd от имени обычного пользователя. Деталь версии программы:
Наконец, после устранения многих ошибок, я дошел до того, что SSHD прервался со следующей ошибкой:
Я проверил исходный код, чтобы увидеть, возможно ли решить проблему без изменения исходного кода. Смотрите код здесь . Некоторая часть кода вызывает аборт программы:
Он проверяет пользовательские привилегии
(geteuid() != 0)
и здесь вызывает проблему.источник
Предполагая, что @magiclantern отметил выше и предполагая, что вы не хотите вносить исправления,
sshd
будет работать что-то вроде Dropbear для вас? Он используется во многих встроенных устройствах, которым нужен ssh-сервер с меньшей занимаемой площадью (и меньшим количеством функций / конфигураций).источник
Вот сценарий пользовательского интерфейса bash, основанный на ответе Бо Джинса:
источник