@@ -13,8 +13,16 @@ case "$1" in
1313 exit -1
1414 fi
1515 USER=" $2 " ; COMMAND=" $3 "
16- USERHOME=" $HOME_DIR /$USER "
17- useradd -d $USERHOME $USER || true
16+
17+ getent passwd $USER > /dev/null 2>&1
18+
19+ if [ $? -eq 0 ]; then
20+ USERHOME=$( bash <<< " echo ~$USER" )
21+ else
22+ USERHOME=" $HOME_DIR /$USER "
23+ useradd -d $USERHOME $USER || true
24+ fi
25+
1826 mkdir -p " $USERHOME /.ssh"
1927 touch $USERHOME /.ssh/authorized_keys
2028 echo " $COMMAND " > " $USERHOME /.sshcommand"
@@ -27,10 +35,19 @@ case "$1" in
2735 exit -1
2836 fi
2937 USER=" $2 " ; NAME=" $3 "
38+
39+ getent passwd $USER > /dev/null 2>&1
40+
41+ if [ $? -eq 0 ]; then
42+ USERHOME=$( bash <<< " echo ~$USER" )
43+ else
44+ exit -1
45+ fi
46+
3047 KEY=$( cat)
3148 FINGERPRINT=$( ssh-keygen -lf /dev/stdin <<< $( echo $KEY ) | awk ' {print $2}' )
32- KEY_PREFIX=" command=\" FINGERPRINT=$FINGERPRINT NAME=$NAME \` cat $HOME_DIR / $USER /.sshcommand\` \$ SSH_ORIGINAL_COMMAND\" ,no-agent-forwarding,no-user-rc,no-X11-forwarding,no-port-forwarding"
33- echo " $KEY_PREFIX $KEY " >> " $HOME_DIR / $USER /.ssh/authorized_keys"
49+ KEY_PREFIX=" command=\" FINGERPRINT=$FINGERPRINT NAME=$NAME \` cat $USERHOME /.sshcommand\` \$ SSH_ORIGINAL_COMMAND\" ,no-agent-forwarding,no-user-rc,no-X11-forwarding,no-port-forwarding"
50+ echo " $KEY_PREFIX $KEY " >> " $USERHOME /.ssh/authorized_keys"
3451 echo $FINGERPRINT
3552 ;;
3653
@@ -40,7 +57,16 @@ case "$1" in
4057 exit -1
4158 fi
4259 USER=" $2 " ; NAME=" $3 "
43- sed --in-place " / NAME=$NAME /d" " $HOME_DIR /$USER /.ssh/authorized_keys"
60+
61+ getent passwd $USER > /dev/null 2>&1
62+
63+ if [ $? -eq 0]; then
64+ USERHOME=$( bash <<< " echo ~$USER" )
65+ else
66+ exit -1
67+ fi
68+
69+ sed --in-place " / NAME=$NAME /d" " $USERHOME /.ssh/authorized_keys"
4470 ;;
4571
4672 help|* ) # sshcommand help
0 commit comments