私たちの設定では、Linux VM への SSH アクセスに Microsoft Active Directory (AD) を使用するように強制されているため、従業員が退職すると、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
代わりに を使用するように編集しました( による)。また、対話的に実行されていない場合は何も行わないという望ましい効果が得られるため、 にコマンドを追加しました。このスクリプトは、まだ ssh クライアントを正しく設定していないユーザーが を使用するための便利なスクリプトになります。login
sudo visudo
/etc/bash.bashrc
接続トンネリング(SSH マルチホップとも呼ばれます)。
接続トンネリングの設定については、理解できたらさらに追加します。
他の回答に触発されましたが、別のアプローチです (AD ユーザーは /etc/passwd にリストされていないため)。
設定:
- 次の行を入力します
/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
非作業ユーザーによって実行されると、デフォルトの作業ユーザーに自動的にログインします。