설정에서는 Microsoft Active Directory(AD)를 사용하여 SSH를 통해 Linux VM에 액세스해야 하므로 직원이 퇴사할 때 AD 계정이 비활성화되면 VM에 액세스할 수 없습니다.
모든 데이터와 사용자가 설정되었습니다. 그래서 제가 생각해낸 계획은 이렇습니다.
원래 사용자 계정에 대한 모든 원격/Ssh 액세스를 비활성화하고 새 AD 계정을 통한 액세스만 허용합니다.
AD 계정에 SSH를 통해 접속하면 자동으로 원래 사용자 계정에 로그인됩니다.
logname
새 AD 계정 대신 원래 사용자 계정(즉, 자동으로 로그인한 계정)을 인쇄 해야 합니다 .
답변1
매우 간단하게 해당 로그인 셸 변수를 /etc/passwd
리디렉션 스크립트로 바꿀 수 있습니다.
john_AD:x:1000:1000:,,,:/home/john_old:/sbin/redirect_user
스크립트는 다음과 같습니다
#!/bin/bash
#autoredirect user to old login
case $USER in
jonh_AD) oldname=john_old
#add list of users
esac
su "$oldname"
그런 다음 AD_user가 예를 들어 입력을 통해 비밀번호 없이 이전 사용자에 로그인할 수 있는지 확인하십시오 sudoers
(사용하도록 스크립트 조정 sudo
).
그러나 이동 시 한 번 실행되고 향후 설정을 덜 번거롭게 만드는 "ID 업데이트" 스크립트를 생성하는 것이 좋습니다. 이는 더 안정적이고 안전하며 위의 스크립트만큼 많은 노력이 필요합니다.
답변2
공개 키 인증을 사용할 수 있고 sudoers 목록을 수정할 필요가 없으므로 ssh
대신 사용하도록 편집되었습니다 (passed ). 또한 대화형으로 실행되지 않으면 아무 것도 하지 않는 원하는 효과가 있기 때문에 명령을 추가했습니다 . 이 스크립트는 아직 SSH 클라이언트를 제대로 설정하지 않은 사용자를 위한 편의 스크립트입니다.login
sudo visudo
/etc/bash.bashrc
연결 터널(Ssh 멀티홉이라고도 함)
연결 터널 설정을 파악한 후에 더 추가하겠습니다.
다른 답변에서 영감을 얻었지만 대안이 있습니다(AD 사용자가 /etc/passwd.conf에 나열되지 않기 때문에).
설정:
- 한 줄
/etc/bash.bashrc
(초기 로그인 시 기본적으로 이 줄을 실행하려는 경우에만):
# Executes convenience script which prompts all white-listed users whether they wish to login as their default work user account
/bin/login_redirect
이로 인해 사용자는 SSH를 통해 기본 업무 사용자 계정에 로그인하게 됩니다.
주요 스크립트:/bin/login_redirect
(모든 사용자가 실행 가능해야 합니다. 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
참고: login_redirect
업무용 사용자가 아닌 사용자가 실행하는 경우 자동으로 기본 업무용 사용자로 로그인됩니다.