Skip to content

Instantly share code, notes, and snippets.

@hiraiva
Created December 22, 2012 14:15
Show Gist options
  • Save hiraiva/4359017 to your computer and use it in GitHub Desktop.
Save hiraiva/4359017 to your computer and use it in GitHub Desktop.
add user with public key auth. (requires mkpasswd)
#!/bin/sh
USERNAME=$1
OPTIONS=$2
PASSWORD=$3
if [ -n $PASSWORD ]
then
PASSWORD=`mkpasswd -l 10 -s 0`
fi
SSHDIR=/home/$USERNAME/.ssh
IDRSA=$SSHDIR/id_rsa
KEYDIR=./keys
PASSFILE=$KEYDIR/$USERNAME.pass
PRIVATEKEY=$KEYDIR/$USERNAME.pem
PUBLICKEY=$KEYDIR/$USERNAME.pub
TESTFILE=.useraddtest
if [ ! -e $KEYDIR ]
then
mkdir $KEYDIR
chmod 0700 $KEYDIR
fi
useradd $USERNAME $OPTIONS -p $PASSWORD
chage -l $USERNAME > $TESTFILE
if [ ! -s $TESTFILE ]
then
rm -rf $TESTFILE
exit 1
fi
rm -rf $TESTFILE
if [ ! -e $SSHDIR ]
then
mkdir $SSHDIR
chmod 0700 $SSHDIR
fi
ssh-keygen -t rsa -N $PASSWORD -f $IDRSA
rm -rf $PUBLICKEY
echo $PASSWORD > $PASSFILE
mv $IDRSA $PRIVATEKEY
mv $IDRSA.pub $PUBLICKEY
cat $PUBLICKEY >> $SSHDIR/authorized_keys
chown -R $USERNAME:$USERNAME $SSHDIR
chmod 0400 $SSHDIR/*
if [ ! -e $PUBLICKEY ]
then
exit 1
fi
echo ""
echo "############ created new user ############"
echo "username: ${USERNAME}"
echo "password file: ${PASSFILE}"
echo "private key: ${PRIVATEKEY}"
echo "public key: ${PUBLICKEY}"
echo "##########################################"
echo ""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment