Zamierzam uruchomić drugą sshd
instancję na nieuprzywilejowanym porcie (np. 2222) z własnym plikiem konfiguracyjnym.
Oczywiście sshd
proces nie może się setuid
zalogować, ponieważ użytkownicy inni niż ten, który uruchamia sshd
demona, jest oczywiście niemożliwy.
Czy można jednak mieć działającego sshd
demona, który będzie działał dla aktualnie działającego użytkownika? W moim przypadku byłoby dobrze.
Próbowałem uruchomić sshd
instancję z własnym plikiem konfiguracyjnym i kluczem hosta, a sshd
proces się uruchamia (brak skarg na brak uprawnień użytkownika root, jak niektóre polecenia), jednak kiedy próbuję połączyć się z tym portem, sshd
proces umiera.
$ /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
Linia oczywiście odstaje, ale nie umrze, dopóki nie próbuje akceptować połączenia.
UsePam
nano
.W ramach aktualizacji tego wątku OpenSSH w wersji 7.5 wycofał opcję UsePrivilegeSeparation, uniemożliwiając wyłączenie separacji uprawnień. Wygląda na to, że uruchomienie SSHD jako użytkownik jest teraz niemożliwe.
Zobacz https://www.openssh.com/releasenotes.html
źródło
Sprawdziłem szczegółowo możliwość uruchomienia usługi sshd jako zwykły użytkownik. Szczegół wersji programu:
W końcu po rozwiązaniu wielu błędów doszedłem do punktu, w którym SSHD przerwał działanie z następującym błędem:
Sprawdziłem kod źródłowy, aby zobaczyć, czy można rozwiązać problem bez zmiany kodu źródłowego. Zobacz kod tutaj . Część kodu powodująca przerwanie programu:
Sprawdza uprawnienia użytkownika
(geteuid() != 0)
i powoduje problem.źródło
Zakładając, co @magiclantern zauważyło powyżej i zakładając, że nie chcesz łatać,
sshd
czy coś takiego jak Dropbear będzie dla ciebie działać? Jest używany w wielu urządzeniach wbudowanych, które potrzebują serwera ssh o mniejszej powierzchni (i mniejszej liczbie funkcji / konfiguracji).źródło
Oto srib bash użytkownika w oparciu o odpowiedź Bo Jeanesa, że:
źródło