Me gustaría poder usar una clave ssh para la autenticación, pero aún así restringir los comandos que se pueden ejecutar a través del túnel ssh.
Con Subversion, he logrado esto usando un archivo .ssh / Authorized_keys como:
command="/usr/local/bin/svnserve -t --tunnel-user matt -r /path/to/repository",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAABIetc...
He intentado esto con "/ usr / bin / git-shell" en el comando, pero acabo de recibir el viejo fatal: What do you think I am? A shell?
mensaje de error.
/bin/bash
?Podría utilizar con éxito git-shell directamente en el archivo de claves autorizadas sin utilizar un script adicional.
La clave es agregar
\"
alrededor de la variable env.Probado en rhel6 openssh-server-5.3p1-70.el6.x86_64:
fuente
git-shell
, pero eso podría ser paranoia.La solución de Grawity se puede modificar fácilmente para que funcione al reemplazar la línea
con la linea
Las citas se ocupan de los problemas reportados anteriormente, y reemplazar exec con git-shell parece un poco más seguro.
fuente
git-shell
está diseñado para usarse como un shell de inicio de sesión, de modo que reciba-c "originalcommand"
como argumentos. Esto no sucede con los "comandos forzados" en OpenSSH; en cambio, el comando forzado se pasa al shell configurado.Lo que puede hacer es escribir un script que lo verifique
$SSH_ORIGINAL_COMMAND
y lo ejecute. Ejemplo en bash :fuente
git <cmd>
,git-<cmd>
¿ no ?man git-shell
(git 1.7.3.4): actualmente, solo se pueden llamar cuatro comandos, git-recibir-paquete git-upload-pack y git-upload-archive con un único argumento requerido, o servidor cvs (para invocar git -cvsserver).$SSH_ORIGINAL_COMMAND
que sea inválido y causandogit-shell
que seNo pude lograr que la solución de Grawity funcionara por la misma razón que informó Neil Mayhew (es decir, las comillas simples enviadas por el cliente git que causan una invalidez
$SSH_ORIGINAL_COMMAND
: estoy usandogit v1.7.x
)Sin embargo, la siguiente solución implementada por @moocode simplemente funciona:
https://moocode.com/posts/6-code-your-own-multi-user-private-git-server-in-5-minutes
Ruby FTW! :-)
fuente
Para completar, y dado que la pregunta original no especificaba que la misma cuenta tenía que ser utilizable para cosas que no sean git, la respuesta obvia es usarla
git-shell
como fue diseñada para usarse: configúrela como el shell de inicio de sesión (es decirusermod
, con , in/etc/passwd
) para ese usuario ssh.Si tiene una sola cuenta de usuario que desea usar de dos maneras:
... entonces se aplican las otras respuestas en este hilo. Pero si puede permitirse asignar un usuario separado a git, entonces configurar su shell
git-shell
es la forma más sencilla de restringirlo, y es un poco más seguro ya que no requiere scripts de shell adicionales.fuente