Abrí un túnel ssh en mi puerta de enlace como este:
autossh -M 30000 -f -N example.com -L \*:20022:192.168.1.40:22
¿Cómo puedo hacer que un usuario, digamos John, use solo este túnel ssh y restrinja a todos los demás usuarios que tengo para que ningún usuario, excepto John, pueda usar ssh usando el puerto 20022? Tenga en cuenta que el usuario john no existe en mi puerta de enlace, ya sea como usuario local o en LDAP.
Respuesta1
Si el cliente es un host Linux, puedes hacerlo coniptables:
iptables -A OUTPUT --dest 192.168.1.40 --dport 22 -m owner --uid-owner john -j ACCEPT
iptables -A OUTPUT --dest 192.168.1.40 --dport 22 -j REJECT
Tenga en cuenta que esto condiciona la dirección y el puerto de destino, no el puerto de origen 20022. Si realmente desea restringir el acceso solo a ese puerto de origen, puede utilizar --sport 20022
en lugar de --dest
y --dport
. Pero, por supuesto, eso no impedirá que otro usuario abra un túnel similar en un puerto diferente.
Respuesta2
Publique solo la clave pública de John en el archivo Authorized_keys en la puerta de enlace. Desactive la autenticación pw.