Je souhaite démarrer une deuxième sshd
instance sur un port non privilégié (par exemple, 2222) avec mon propre fichier de configuration.
De toute évidence, le sshd
processus ne peut pas se setuid
connecter en tant qu'utilisateur autre que celui qui exécute le sshd
démon est clairement impossible.
Cependant, est-il possible d'avoir un sshd
démon qui fonctionne pour l'utilisateur en cours d'exécution? Pour mon cas d'utilisation, ce serait bien.
J'ai essayé de démarrer une sshd
instance avec mon propre fichier de configuration et une clé d'hôte et le sshd
processus démarre (aucune plainte pour ne pas être root, comme certaines commandes), mais lorsque j'essaie de me connecter à ce port, le sshd
processus s'interrompt.
$ /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
La debug1: setgroups() failed: Operation not permitted
ligne dépasse de toute évidence, mais elle ne meurt pas avant d’essayer d’accepter une connexion.
UsePam
surno
.En tant que mise à jour de ce fil, OpenSSH dans la version 7.5 a déconseillé d'utiliser l'option UsePrivilegeSeparation, rendant impossible la désactivation de la séparation des privilèges. Il semble qu'exécuter SSHD en tant qu'utilisateur est maintenant impossible.
Voir https://www.openssh.com/releasenotes.html
la source
J'ai vérifié en détail la possibilité d'exécuter le service sshd en tant qu'utilisateur normal. Détail de la version du programme:
Enfin, après avoir résolu de nombreuses erreurs, j’ai atteint un point tel que SSHD a été abandonné avec l’erreur suivante:
J'ai vérifié le code source pour voir s'il était possible de résoudre le problème sans changer le code source. Voir le code ici . Une partie du code provoquant l'avortement du programme:
Il vérifie le privilège d'utilisateur par
(geteuid() != 0)
et provoque ici le problème.la source
En supposant ce que @magiclantern a noté ci - dessus et en supposant que vous ne souhaitiez pas appliquer de correctifs
sshd
, quelque chose comme Dropbear fonctionnera-t-il pour vous? Il est utilisé dans de nombreux périphériques intégrés qui souhaitent un serveur ssh avec une empreinte réduite (et moins de fonctionnalités / configurations).la source
Voici un script bash basé sur la réponse de Jeans Bo Jean:
la source