BASH - Login options

Reuse SSH-AGENT

Share the same ssh-agent across multiple login sessions. With added checks for NFS shared home directory issues

start_agent()
{
    killall ssh-agent 2> /dev/null
    ssh-agent | sed 's/ Agent pid//' > $SSH_ENV
    . $SSH_ENV > $SSH_PID_FILE
    ssh-add ~/.ssh/<private_key> 2> /dev/null
}

mkdir -p "$HOME/.ssh/agent"         # keeps agents more secure than in /tmp
SSH_TMOUT=2678400                   # 31 days
SSH_ENV="$HOME/.ssh/agent/env.$(hostname)"
SSH_PID_FILE="$HOME/.ssh/agent/pid.$(hostname)"

if [[ -e $SSH_PID_FILE ]]; then
    SSH_PID=$(< $SSH_PID_FILE) 
    PROCESS=$(ps -p $SSH_PID -o comm=)

# depeding on system some do not support -o option
#    PROCESS=$(ps -p $SSH_PID -o comm=)
#    if [[ $PROCESS =~ 'ssh-agent' ]]; then

    if [[ $PROCESS == 'ssh-agent' ]]; then
        . $SSH_ENV > $SSH_PID_FILE
    else 
        start_agent
    fi  
else
    start_agent
fi

 

 

History per user on shared sudo accounts ​

A shared account will have a shared command history. Unsuspecting users could accidentally replay a last command that is not theirs. Using the below, each user will get there own time stamped history First create a directory for history files

mkdir -p ~/.histfiles

Then, adding this to .bashrc for shared accounts gives each user who becomes the account their own history

# User specific aliases and functions
# 
mkdir -p ~/.histfiles
HISTFILE=~/.histfiles/$(who am i | cut -d" " -f1 )
echo "#$(date):$(tty)" >> $HISTFILE