Ich möchte eine zweite sshd
Instanz auf einem nicht privilegierten Port (z. B. 2222) mit meiner eigenen Konfigurationsdatei starten .
Offensichtlich sshd
ist es nicht möglich setuid
, sich als Benutzer anzumelden, die nicht den sshd
Daemon ausführen.
Ist es jedoch möglich, einen funktionierenden sshd
Daemon zu haben , der für den aktuell ausgeführten Benutzer funktioniert? Für meinen Anwendungsfall wäre dies in Ordnung.
Ich habe versucht, eine sshd
Instanz mit meiner eigenen Konfigurationsdatei und meinem Hostschlüssel zu booten, und der sshd
Prozess wird gestartet (keine Beschwerden, dass ich nicht root bin, wie bei einigen Befehlen). Wenn ich jedoch versuche, eine Verbindung zu diesem Port herzustellen, wird der sshd
Prozess abgebrochen.
$ /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
Die debug1: setgroups() failed: Operation not permitted
Linie ragt offensichtlich heraus, stirbt aber erst, wenn versucht wird, eine Verbindung zu akzeptieren.
UsePam
zuno
.Als Update für diesen Thread hat OpenSSH in Version 7.5 die Option UsePrivilegeSeparation verworfen, sodass die Trennung von Berechtigungen nicht mehr deaktiviert werden kann. Es scheint, dass es jetzt unmöglich ist, SSHD als Benutzer auszuführen.
Siehe https://www.openssh.com/releasenotes.html
quelle
Ich habe die Möglichkeit, den sshd-Dienst als normaler Benutzer auszuführen, eingehend geprüft. Detail der Programmversion:
Nachdem ich viele Fehler behoben hatte, kam ich zu einem Punkt, an dem SSHD mit dem folgenden Fehler abgebrochen wurde:
Ich habe den Quellcode überprüft, um festzustellen, ob es möglich ist, das Problem zu beheben, ohne den Quellcode zu ändern. Sehen Sie den Code hier . Ein Teil des Codes verursacht einen Programmabbruch:
Es prüft die Benutzerrechte nach
(geteuid() != 0)
und verursacht hier das Problem.quelle
Unter der Annahme, dass @magiclantern oben erwähnt wurde und Sie nicht patchen möchten, funktioniert
sshd
so etwas wie Dropbear für Sie? Es wird in vielen eingebetteten Geräten verwendet, die einen SSH-Server mit geringerem Platzbedarf (und weniger Funktionen / Konfigurationen) wünschen.quelle
Hier ist ein Userland-Bash-Skript, das auf der Antwort von Bo Jeanes basiert:
quelle