Spaces:
Build error
Build error
| #-- | |
| #-- CS/DS 553 MLOps | |
| #-- | |
| #-- Poll the host/container given to our group to discover if it has been | |
| #-- restarted/wiped | |
| #-- If it has been restarted, update host with | |
| #-- Users, SSH public keys, and startup scripts | |
| #-- | |
| #-- Assumptions: | |
| #-- 1) If my personal SSH key has access, system is stable | |
| #-- 2) If system has been rebooted, that means it has been wiped | |
| #-- 3) If system has been wiped, it has been restored to the original | |
| #-- state that it was in when presented to the class on 2024-09-16 | |
| #-- This includes: | |
| #-- a) A user account "student-admin" | |
| #-- b) That account has sudo permission | |
| #-- c) A public key is stored in /home/student-admin/.ssh/authorized_keys | |
| #-- | |
| #-- Initialize | |
| MLOPSHOST=paffenroth-23.dyn.wpi.edu | |
| MLOPSPORT=22002 | |
| MLOPSADMIN=student-admin | |
| MLOPSADMINKEY=~/.ssh/${MLOPSADMIN}_key | |
| MLOPSPERS=andrew #--change to specific key name to run | |
| MLOPSPERSKEY=~/.ssh/$MLOPSPERS | |
| echo; echo "`date` - Starting..." | |
| #-- Try to access host using my personal SSH key | |
| testhost=`ssh -i $MLOPSPERSKEY -p $MLOPSPORT $MLOPSHOST hostname 2> /dev/null` | |
| testhost=`ssh -i $MLOPSPERSKEY -p $MLOPSPORT $MLOPSHOST "ls /foobar" 2> /dev/null` | |
| #-- If access failed, my personal SSH key no longer has access | |
| if [ "$?" != 0 ]; then | |
| #-- | |
| #-- The system has been wiped/restored. | |
| #-- | |
| #-- Create authorized_keys file with the group's public keys to access student-admin account | |
| cat << EOF > /tmp/authorized_keys | |
| #-- Default User | |
| `cat ~/.ssh/student-admin_key.pub` | |
| #-- Andrew Keane | |
| `cat ~/.ssh/andrew.pub` | |
| #-- Jake Watson | |
| `cat ~/.ssh/jakewatson.pub` | |
| #-- Deep Suchak | |
| `cat ~/.ssh/deepsuchak.pub` | |
| EOF | |
| #-- Restrict permissions to user read only | |
| chmod 600 /tmp/authorized_keys | |
| #-- Put the group's public keys into default user's authorized_keys | |
| echo "Update the default user's authorized_keys with group's user's public keys" | |
| SCPCMD="scp -p -i $MLOPSADMINKEY -P $MLOPSPORT" | |
| $SCPCMD /tmp/authorized_keys $MLOPSADMIN@$MLOPSHOST:.ssh/authorized_keys | |
| #-- Loop for all users in group | |
| #for username in andrew jakewatson deepsuchak ; do | |
| for username in andrew jakewatson ; do | |
| echo ; echo "`date` - Working on user $username..." | |
| #-- Create accounts for group's users | |
| echo "Create account and directories" | |
| SSHCMD="ssh -i $MLOPSADMINKEY -p $MLOPSPORT $MLOPSADMIN@$MLOPSHOST" | |
| $SSHCMD "sudo adduser $username < /dev/null > /dev/null 2>&1" | |
| #-- Create directories for user's private SSH keys | |
| $SSHCMD "sudo mkdir /home/$username/.ssh" | |
| #-- Temporarily change owner to student admin account | |
| $SSHCMD "sudo chown -R student-admin:student-admin /home/$username" | |
| #-- Put SSH public keys in place for user's access their owh accounts | |
| echo "Push public key" | |
| $SCPCMD ~/.ssh/$username.pub $MLOPSADMIN@$MLOPSHOST:/home/$username/.ssh/authorized_keys | |
| #-- Restrict permission to make SSH keys usable | |
| $SSHCMD "sudo chmod 700 /home/$username/{,.ssh}" | |
| $SSHCMD "sudo chmod 600 /home/$username/.ssh/authorized_keys" | |
| #-- Set ownership to correct users | |
| $SSHCMD "sudo chown -R $username:$username /home/$username" | |
| done | |
| fi | |
| echo ; echo "`date` - Complete" | |