Compare commits
11 Commits
18b8086955
...
pubkey_sel
Author | SHA1 | Date | |
---|---|---|---|
725c678076 | |||
325a2157b5 | |||
9b60386710 | |||
9241d2f96d | |||
6712ebfae9 | |||
76a35b8301 | |||
068400457c | |||
|
3dd87f641d | ||
|
5d2b454f24 | ||
|
69b343498f | ||
|
35de743065 |
27
Makefile
Normal file
27
Makefile
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# sshin - ssh in
|
||||||
|
# See LICENSE file for copyright and license details.
|
||||||
|
|
||||||
|
# paths
|
||||||
|
PREFIX = /home/${USER}/.local
|
||||||
|
CONFPREFIX = /home/${USER}/.config
|
||||||
|
MANPREFIX = $(PREFIX)/share/man
|
||||||
|
SHELL = bash
|
||||||
|
|
||||||
|
SRC = drw.c dmenu.c stest.c util.c
|
||||||
|
OBJ = $(SRC:.c=.o)
|
||||||
|
|
||||||
|
all: install
|
||||||
|
|
||||||
|
install:
|
||||||
|
mkdir -p $(DESTDIR)$(PREFIX)/bin
|
||||||
|
cp sshin $(PREFIX)/bin
|
||||||
|
mkdir -p $(DESTDIR)$(MANPREFIX)/man1
|
||||||
|
cp sshin.1 $(DESTDIR)$(MANPREFIX)/man1
|
||||||
|
mkdir -p $(DESTDIR)$(CONFPREFIX)/sshin
|
||||||
|
cp -n hosts.example $(DESTDIR)$(CONFPREFIX)/sshin/hosts
|
||||||
|
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
rm -f $(DESTDIR)$(PREFIX)/bin/sshin
|
||||||
|
rm -f $(DESTDIR)$(MANPREFIX)/man1/sshin.1
|
||||||
|
rm -f $(DESTDIR)$(CONFPREFIX)/sshin/
|
4
hosts.example
Normal file
4
hosts.example
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
#domain,user,remote,local,yubi_support,usual identity file,yubikey identity file,
|
||||||
|
example.me,user,22,12345,1,~/.ssh/id_rsa,~/.ssh/id_ed25519_sk
|
||||||
|
octosrv.me,marco,22,12345,0,~/.ssh/id_rsa,
|
||||||
|
raber.me,marco,2222,4343,1,~/.ssh/id_rsa_pass,~/.ssh/id_ed25519_sk
|
10
setup.sh
10
setup.sh
@@ -1,3 +1,7 @@
|
|||||||
mkdir ~/.local/share/sshin
|
#!/bin/bash
|
||||||
cp port_association ~/.local/share/sshin/
|
[[ $(uname) = "Linux" ]] && grep "sshin" ~/.bashrc >/dev/null || echo "alias sshin=\"~/gitclones/sshin/sshin\"" >> ~/.bashrc; echo "run \"source ~/.bashrc\"";exit
|
||||||
cp sshin ~/.local/bin || echo "Error in copying executable to .local/bin" && echo "Run: sudo cp sshin /usr/bin/"
|
|
||||||
|
PREFIX=~/.local/
|
||||||
|
mkdir $PREFIX/share/sshin
|
||||||
|
[[ -e $PREFIX/share/sshin/port_association ]] || cp port_association $PREFIX/share/sshin/
|
||||||
|
cp sshin $PREFIX/bin/ || echo "Error in copying executable to $PREFIX/bin" && echo "if on linux, run: sudo cp sshin /usr/bin/"
|
||||||
|
48
sshin
48
sshin
@@ -1,26 +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\""
|
|
||||||
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
|
|
||||||
#[[ $1 =~ $re ]] && command="${command}192.168.1.$2" || port=$(grep $1 ~/.local/share/sshin/port_association | awk '{print $NF}') && command="${command}$1 -p $port"
|
[[ $MANY_ARGS -eq 1 ]] && SSHIN_USER=$DEFAULT_USER
|
||||||
if [[ $1 =~ $re ]]
|
|
||||||
then
|
command="${command} ${SSHIN_USER}@${DOMAIN}"
|
||||||
command="${command}192.168.1.$1"
|
|
||||||
else
|
lsusb | grep -q "Yubico" && YUBIKEY_PRESENCE=1 || YUBIKEY_PRESENCE=0
|
||||||
port=$(grep $1 ~/.local/share/sshin/port_association | awk '{print $NF}') && command="${command}$1 -p $port"
|
[[ $YUBIKEY_PRESENCE -eq 1 ]] && [[ $YUBIKEY_SUPPORT -eq 1 ]] && command="${command} -i $YUBIKEY_PUBKEY"
|
||||||
fi
|
[[ $USUAL_PUBKEY ]] && command="${command} -i ${USUAL_PUBKEY}"
|
||||||
#echo $command
|
[[ $REMOTE_PORT ]] && command="${command} -p ${REMOTE_PORT}"
|
||||||
$command
|
[[ $LOCAL_PORT ]] && command="${command} -D${LOCAL_PORT}"
|
||||||
|
echo "${command}"
|
||||||
|
sleep 1
|
||||||
|
#echo "Domain $DOMAIN"
|
||||||
|
#echo "User $DEFAULT_USER"
|
||||||
|
#echo "Remote $REMOTE_PORT"
|
||||||
|
#echo "Local $LOCAL_PORT"
|
||||||
|
#echo "Support $YUBIKEY_SUPPORT"
|
||||||
|
#echo "Usual $USUAL_PUBKEY"
|
||||||
|
${command}
|
||||||
|
20
sshin.1
Normal file
20
sshin.1
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
.\" Manpage for sshin - ssh in
|
||||||
|
.\" Contact marco@raber.me to correct errors or typos.
|
||||||
|
.TH man 8 "27 April 2022" "1.0" "sshin man page"
|
||||||
|
.SH NAME
|
||||||
|
sshin \- ssh in(to a machine)
|
||||||
|
.SH SYNOPSIS
|
||||||
|
sshin [USER] [last byte of IP address OR hostname]
|
||||||
|
.SH DESCRIPTION
|
||||||
|
sshin is a script that simplifies ssh connection. NO MORE REACHING FOR THE @ SYMBOL USED BY THE UTTERLY DERANGED
|
||||||
|
.SH OPTIONS
|
||||||
|
sshin options:
|
||||||
|
.TP
|
||||||
|
.B \-h
|
||||||
|
Display help
|
||||||
|
.SH SEE ALSO
|
||||||
|
ssh
|
||||||
|
.SH BUGS
|
||||||
|
eh ditemeli voi
|
||||||
|
.SH AUTHOR
|
||||||
|
Marco Raber (marco@raber.me)
|
Reference in New Issue
Block a user