Compare commits

...

2 Commits

Author SHA1 Message Date
325a2157b5 run on ip 2022-10-03 23:07:09 +02:00
9b60386710 added first pubkey automation for yubikey 2022-06-11 16:23:55 +02:00
2 changed files with 29 additions and 28 deletions

View File

@ -3,6 +3,7 @@
# paths # paths
PREFIX = /home/${USER}/.local PREFIX = /home/${USER}/.local
CONFPREFIX = /home/${USER}/.config
MANPREFIX = $(PREFIX)/share/man MANPREFIX = $(PREFIX)/share/man
SHELL = bash SHELL = bash
@ -16,8 +17,11 @@ install:
cp sshin $(PREFIX)/bin cp sshin $(PREFIX)/bin
mkdir -p $(DESTDIR)$(MANPREFIX)/man1 mkdir -p $(DESTDIR)$(MANPREFIX)/man1
cp sshin.1 $(DESTDIR)$(MANPREFIX)/man1 cp sshin.1 $(DESTDIR)$(MANPREFIX)/man1
mkdir -p $(DESTDIR)$(CONFPREFIX)/sshin
cp -n hosts.example $(DESTDIR)$(CONFPREFIX)/sshin/hosts
uninstall: uninstall:
rm -f $(DESTDIR)$(PREFIX)/bin/sshin rm -f $(DESTDIR)$(PREFIX)/bin/sshin
rm -f $(DESTDIR)$(MANPREFIX)/man1/sshin.1 rm -f $(DESTDIR)$(MANPREFIX)/man1/sshin.1
rm -f $(DESTDIR)$(CONFPREFIX)/sshin/

53
sshin
View File

@ -1,31 +1,28 @@
#!/bin/bash #!/bin/bash
usage() { command="ssh "
echo "Usage: sshin user hostname/last byte of IP address"
echo
echo "This tools automatically chooses the server port based on the port_association file in ~/local/share/sshin/port_association"
echo
echo "Example: \"sshin foo bar.com \" will run \"ssh foo@bar.com -p 2323\""
echo "Example: \"sshin foo 43 \" will run \"ssh foo@192.168.1.43\""
return
}
IP_PREFIX="192.168.1." MANY_ARGS=$#
[[ $# -le 1 ]] && usage && exit 1 [[ $MANY_ARGS -eq 2 ]] && SSHIN_USER=$1 && shift
[[ $1 = "-h" ]] && usage -h && exit 1 DOMAIN=$1
re='^[0-9]+$'
command="ssh ${1}@" IFS="," read -r DOMAIN DEFAULT_USER REMOTE_PORT LOCAL_PORT YUBIKEY_SUPPORT USUAL_PUBKEY YUBIKEY_PUBKEY < <(tail -n +2 $HOME/.config/sshin/hosts | grep $DOMAIN | head -n 1)
shift
if [[ $1 =~ $re ]] [[ $MANY_ARGS -eq 1 ]] && SSHIN_USER=$DEFAULT_USER
then
command="${command}192.168.1.$1" command="${command} ${SSHIN_USER}@${DOMAIN}"
else
[[ $(uname) = "Linux" ]] && ports_file="$HOME/.local/share/sshin/port_association" || ports_file="$HOME/sshin/port_association" lsusb | grep -q "Yubico" && YUBIKEY_PRESENCE=1 || YUBIKEY_PRESENCE=0
port=$(grep $1 $ports_file | awk '{print $2}') [[ $YUBIKEY_PRESENCE -eq 1 ]] && [[ $YUBIKEY_SUPPORT -eq 1 ]] && command="${command} -i $YUBIKEY_PUBKEY"
command="${command}$1" [[ $USUAL_PUBKEY ]] && command="${command} -i ${USUAL_PUBKEY}"
[[ -n $port ]] && command="${command} -p $port" [[ $REMOTE_PORT ]] && command="${command} -p ${REMOTE_PORT}"
dport=$(grep $1 $ports_file | awk '{print $NF}') [[ $LOCAL_PORT ]] && command="${command} -D${LOCAL_PORT}"
[[ -n $port ]] && command="${command} -D$dport" echo "${command}"
fi sleep 1
echo $command #echo "Domain $DOMAIN"
$command #echo "User $DEFAULT_USER"
#echo "Remote $REMOTE_PORT"
#echo "Local $LOCAL_PORT"
#echo "Support $YUBIKEY_SUPPORT"
#echo "Usual $USUAL_PUBKEY"
${command}