En nuestra configuración, nos vemos obligados a utilizar Microsoft Active Directory (AD) para el acceso ssh a nuestra máquina virtual Linux, de modo que cuando los empleados se vayan se les pueda bloquear el acceso a la máquina virtual una vez que se desactive su cuenta AD.
Ya tenemos todos nuestros datos y usuarios configurados. Entonces mi plan propuesto es:
Deshabilite todo acceso remoto/ssh a las cuentas de usuario originales, permitiendo solo el acceso a través de sus nuevas cuentas AD.
Al iniciar sesión en su cuenta de AD, inician sesión automáticamente en su cuenta de usuario original.
Necesito logname
imprimir la cuenta de usuario original (es decir, la cuenta en la que inician sesión automáticamente) y no la nueva cuenta de AD.
Respuesta1
De manera muy simplista, podría reemplazar la respectiva variable de shell de inicio de sesión en /etc/passwd
un script de redirección:
john_AD:x:1000:1000:,,,:/home/john_old:/sbin/redirect_user
Y el guión sería como
#!/bin/bash
#autoredirect user to old login
case $USER in
jonh_AD) oldname=john_old
#add list of users
esac
su "$oldname"
Luego asegúrese de que AD_user pueda iniciar sesión con el usuario anterior sin contraseña, por ejemplo, a través de una sudoers
entrada (adapte el script para usar sudo
).
Sin embargo, sigo sugiriendo crear un script de "actualización de ID" para ejecutarlo una vez con la mudanza y tener una configuración menos complicada en el futuro. Esto es mucho más estable, seguro y requiere tanto esfuerzo como el script anterior.
Respuesta2
Editado para usar ssh
en lugar de login
porque puede hacer uso de la autenticación de clave pública y no necesita una modificación en la lista de sudoers (por sudo visudo
). También agrego el comando /etc/bash.bashrc
porque tiene el efecto deseado de no hacer nada si no se ejecuta de forma interactiva. Este script se convierte en un script conveniente para los usuarios que aún no han configurado correctamente sus clientes ssh para su uso.túnel de conexión(también conocido como ssh multisalto).
Agregaré más sobre la configuración del túnel de conexión una vez que lo haya resuelto.
Inspirado en la otra respuesta, pero con un enfoque alternativo (porque los usuarios de AD no figuran en /etc/passwd.
Configuración:
- Una línea
/etc/bash.bashrc
(solo si desea que esto se ejecute de forma predeterminada en el inicio de sesión inicial):
# Executes convenience script which prompts all white-listed users whether they wish to login as their default work user account
/bin/login_redirect
Esto hace que el usuario inicie sesión a través de ssh en su cuenta de usuario laboral predeterminada.
Guión principal:/bin/login_redirect
(debe ser ejecutable para todos los usuarios chmod +x bin/login_redirect
)
!/usr/bin/env bash
generate_divider() {
user_query="$1"
user_query_len="${#user_query}"
user_query_len=$((user_query_len+1))
str=$(printf "%${user_query_len}s")
divider="${str// /_}"
}
case "$(logname)" in
# White-list
12345632) work_user=dean;;
12345633) work_user=tom;;
12345634) work_user=mary;;
esac
work_user="${work_user:-none}"
if [ "${work_user}" != "none" ]; then
user_query="Do you wish to login as your default work user? [Y/n]: "
generate_divider "${user_query}"
echo
echo "${divider}"
echo "[WARNING]: You are connected directly to your AD account."
echo " Ask the admin of this server for help"
echo " configuring a multi-hop ssh connection. This "
echo " is a convenience script written to allow"
echo " connection to your default work user in the"
echo " interim."
read -p "${user_query}" login_ans
login_ans="${login_ans:-Y}"
if [ "${login_ans}" == "Y" ]; then
echo "Username: ${work_user}"
exec ssh -t "${work_user}"@"$(hostname)" "echo ${divider}; echo; /bin/bash;"
fi
fi
Nota: Si login_redirect
lo ejecuta un usuario que no es del trabajo, esto iniciará sesión automáticamente en su usuario del trabajo predeterminado.