![¿Hay alguna manera de obtener la dirección IP del cliente SSH del usuario en un script bash?](https://rvso.com/image/1606698/%C2%BFHay%20alguna%20manera%20de%20obtener%20la%20direcci%C3%B3n%20IP%20del%20cliente%20SSH%20del%20usuario%20en%20un%20script%20bash%3F.png)
Tengo dos usuarios que necesitan utilizar el mismo inicio de sesión debido a una restricción de la aplicación.
Estos usuarios tienen opiniones muy diferentes sobre cómo debería verse un indicador de shell. Uno de ellos incluso insiste en modificar la paleta de colores. Esto ha resultado en una disputa sobre .bashrc PS1. Les he dado scripts para que establezcan sus propias preferencias pero... digamos que es complicado.
Afortunadamente, ambos se conectan desde ubicaciones con direcciones IP conocidas. ¿Hay alguna manera de incorporar la dirección IP remota del usuario en un condicional y así darles a ambos lo que quieren sin ningún paso adicional por su parte? Se están conectando vía ssh.
Respuesta1
Del manual del cliente OpenSSH SSH ( man 1 ssh
):
ENVIRONMENT
ssh
normalmente establecerá las siguientes variables de entorno:[…]
SSH_CONNECTION
Identifica los extremos cliente y servidor de la conexión. La variable contiene cuatro valores separados por espacios: dirección IP del cliente, número de puerto del cliente, dirección IP del servidor y número de puerto del servidor.[…]
En .bashrc
deberías hacer como:
case "${SSH_CONNECTION%% *}" in
1.2.3.4|1.2.3.5 )
PS1=…
;;
2.2.7.* )
PS1=…
;;
# add support for more users if needed
esac
o como
if [ "${SSH_CONNECTION%% *}" = "1.2.3.4" ]; then
PS1=…
else
PS1=…
fi
Respuesta2
Si inician sesión con ssh usando claves, puedes hacer algo como:
myip=`grep 'Accepted publickey for bozo' /var/log/auth.log | tail -1 | awk '{print $11}'`
y luego compare $myip. Si están usando contraseñas, modifíquelas en consecuencia. (Modifique también si por alguna razón su nombre de usuario no es bozo).
(Esto debería funcionar para Ubuntu y otras variantes de Debian; la ubicación/nombre del archivo de registro de autenticación y el formato exacto pueden variar con otras versiones).