SSHキーでログインしたときにログインしたユーザーのEメールをどのように取得しますか?

SSHキーでログインしたときにログインしたユーザーのEメールをどのように取得しますか?

私はbashシェルとUbuntu 18.04を使用しています。かなり標準的なRSA公開 - 秘密鍵設定を使用してサーバーにSSHで接続し、公開鍵をサーバーの.ssh / authorized_keysファイルに入れました。

ssh-rsa AAAAB…KKRaniLSv8mHQ== [email protected]

ログイン後にログインアカウントの電子メールを通知するスクリプトまたはコマンドを作成できますか?上記の場合、スクリプトを出力したいと思います。[Eメール保護]

編集する:関連ログインユーザーに対するsudo権限がありません。

ベストアンサー1

公開鍵エントリの末尾の文字列をキャプチャすることはできないようですが、authorized_keys特定のSSHキーでログインすると、カスタムスクリプトがトリガーされるようにすることができます。

command="..."非常に単純な概念の証明は、キーの前に以下を追加することです。

command="echo [email protected] ; exec /bin/bash" ssh-rsa AAAAB…KKRaniLSv8mHQ== [email protected]

上記は、次の2つの理由で非常に強力ではありません。

  • ユーザーが自分のコマンドを実行するのを防ぎます。期待どおりに動作しません。ssh [email protected] some-command
  • ユーザーシェルは/bin/bash

上記の問題を解決するには、コマンドとして使用するスクリプトを作成します。

#!/bin/bash
# Echo the email address
echo $1

if [[ -z $SSH_ORIGINAL_COMMAND ]] ; then
    # If the user is trying to execute a regular shell then find which shell
    exec $(getent passwd $(whoami) | awk -F: '{print $NF}')
else:
    # If the user is trying to execute another command then run that command
    exec $SSH_ORIGINAL_COMMAND
fi
  1. 適切な場所に保管してください。/home/username/.print_login_email.sh
  2. chmodを使用して実行可能にします。 chmod u+x /home/username/.print_login_email.sh
  3. 項目に以下を追加しますauthorized_keys
command="/home/username/.print_login_email.sh [email protected]" ssh-rsa AAAAB…KKRaniLSv8mHQ== [email protected]

より安全な代替

command="..." 呼び出しなしでこれを行うことができますが、 ~/.profile または ~/.zshenv でチェックインされた環境変数を使用できます。

~/.ssh/authorized_keys

environment="SSH_USER=PUBKEYFROMJOEDOE1" ssh-rsa AAAAAB3Ny...
environment="SSH_USER=PUBKEYFROMJOEDOE2" ssh-rsa AAAAAB3Nz...

~/.zshenv|~/.profile

if [ -n "$SSH_USER" ]; then
  logger -ip auth.notice -t sshd "Accepted publickey for $SSH_USER"
  #This Part if ZSH-Specific
  export HISTFILE="$HOME/.zsh_$SSH_USER_history"
  if [ "$SSH_USER" != "DONTSENDMAILUSER" ]; then
    echo "User $SSH_USER has logged in on Hostname" | NULLMAILER_NAME="HOSTNAME LOGIN" mail -s "Notice from SSH-Login" [email protected]
  fi
fi

私は通常/etc/zsh/zshenv - ~crpbにスクリプトを持っています。

おすすめ記事