Solución 1:
Asumiendo que tienes UsePAM yes
en /etc/ssh/sshd_config
, y suponiendo que desee establecer estas variables de entorno para cada usuario, puede hacer que pam establezca las variables de entorno por usted. Si tiene las variables de entorno definidas en /etc/gitenv
podría agregar esta línea a /etc/pam.d/sshd
auth required pam_env.so envfile=/etc/gitenv
O al inspeccionar este archivo, es posible que descubra que ya se está utilizando pam_env.so y que ya hay un archivo al que puede agregar cosas. Solo tenga cuidado y asegúrese de haber probado exhaustivamente sus cambios antes de finalizar su sesión ssh, ya que cuando está jugando con pam, puede romper por completo su capacidad para iniciar sesión en su servidor, si no tiene cuidado.
Solución 2:
Estoy configurando una variable de entorno para mis conexiones SSH usando ~/.ssh/environment
. El archivo puede contener variables en la forma VAR=value
, no es necesario exportarlos explícitamente.
Sin embargo, este archivo de configuración de usuario es ignorado de manera predeterminada por el proceso del servidor SSH a menos que la opción PermitUserEnvironment esté establecida en sí. Por lo tanto, debe asegurarse de editar /etc/sshd_config en el servidor SSH para agregar o actualizar este parámetro:
PermitUserEnvironment yes
Debe volver a cargar la configuración del servidor SSH. En RHEL o Suse Linux lo hace (como root)
/sbin/service sshd reload
(Posiblemente reemplace sshd por ssh si no funciona)
En Ubuntu (usando advenedizo) lo haces
sudo reload ssh
En cualquier otro Linux, puede probar (como root)
/etc/init.d/sshd reload
(Reemplace sshd por ssh o openssh o lo que corresponda al script de inicio del servidor SSH)
Solución 3:
Ya no tengo un host compartido de Godaddy, por lo que no puedo verificar si las soluciones propuestas son válidas. Esta seguirá siendo la respuesta aceptada, ya que funcionó cuando hice la pregunta. Las otras respuestas también podrían funcionar. Dejo que la comunidad decida eso con votos a favor.
Está bien. La solución es que no hay solución en un host compartido de Godaddy. Probé todo, pero nada funciona, así que decidí quedarme con ~/.ssh/authorized_keys:
command="~/connect.sh" ssh-rsa AAAAB3NzaC...
En ~/conectar.sh:
#!/bin/bash
if [ -f "${HOME}/.env_profile" ]; then
source ~/.env_profile
fi;
if [ "x${SSH_ORIGINAL_COMMAND}x" == "xx" ]; then
$SHELL --login
else
eval "${SSH_ORIGINAL_COMMAND}"
fi;
Y en el ~/.env_profile:
export PATH=$PATH:$HOME/bin:$HOME/git/libexec/git-core
export LD_LIBRARY_PATH=$HOME/git/lib
export GIT_EXEC_PATH=~/git/libexec/git-core
export GIT_TEMPLATE_DIR=~/git/share/git-core/templates
Así que tengo que copiar el comando ="..." a cada clave rsa en el archivo authorized_keys. Esto es duplicación de código, pero no creo que haya otra solución en los hosts compartidos de Godaddy.