Difference between revisions of "Jumpgate"

From HackerNet
Jump to: navigation, search
m
Line 81: Line 81:
 
   IdentityFile ~/.ssh/rsa_private_key
 
   IdentityFile ~/.ssh/rsa_private_key
 
   ForwardAgent yes
 
   ForwardAgent yes
 +
 +
==.bashrc==
 +
.bashrc är en fil som körs varje gång bash laddas. I denna filen kan du skriva egna kommandon som du kan köra i kommandoprompten.
 +
 +
===Extract===
 +
Skriv <code>extract <filnamn></code> för att packa upp en fil.
 +
extract () {
 +
    if [ -f $1 ] ; then
 +
        case $1 in
 +
            *.tar.bz2)  tar xvjf $1    ;;
 +
            *.tar.gz)    tar xvzf $1    ;;
 +
            *.bz2)      bunzip2 $1    ;;
 +
            *.rar)      unrar x $1      ;;
 +
            *.gz)        gunzip $1      ;;
 +
            *.tar)      tar xvf $1    ;;
 +
            *.tbz2)      tar xvjf $1    ;;
 +
            *.tgz)      tar xvzf $1    ;;
 +
            *.zip)      unzip $1      ;;
 +
            *.Z)        uncompress $1  ;;
 +
            *.7z)        7z x $1        ;;
 +
            *)          echo "don't know how to extract '$1'..." ;;
 +
        esac
 +
    else
 +
        echo "'$1' is not a valid file!"
 +
    fi
 +
  }
  
 
[[Category:Guider]]
 
[[Category:Guider]]

Revision as of 10:45, 25 February 2016

En jumpgate kan användas för att öka säkerheten men också för att förenkla maskinhantering genom att ha ett enda ställe man loggar in på och kan managera övriga resurser.

Grundläggande för en jumpgate är att ha en kompetent terminal multiplexer. T.ex Screen eller Tmux.

sudo apt-get update && sudo apt-get upgrade && sudo apt-get -y install screen
cat <<'__EOF__'>> .screenrc
defscrollback 10000
termcapinfo xterm* ti@:te@
nethack on
__EOF__

Ännu mer grundläggande är att ha en automagisk screen som alltid ställer upp vid login.

cat <<'__EOF__'>> .bashrc
if [ -z "$STARTED_SCREEN" ] && [ -n "$SSH_TTY" ]
then
 case $- in
   (*i*)
     STARTED_SCREEN=1; export STARTED_SCREEN
     mkdir -p -- "$HOME/lib/screen-logs"
     screen -R -D -S main  ||
       echo "Screen failed! continuing with normal bash startup"
 esac
fi
__EOF__

Attacha automatiskt till din tmux session vid inloggning.

if  -z "$TMUX" ; then
   tmux has-session &> /dev/null
   if [ $? -eq 1 ]; then
     exec tmux new
     exit
   else
     exec tmux attach
     exit
   fi
fi

Keep-Alive
Håll SSH-sessioner vid liv genom att skicka ett litet paket med jämna mellanrum.

echo "    ServerAliveInterval 120" | sudo tee -a /etc/ssh/ssh_config

SSH Autentisering

För att göra inloggning mot andra maskiner smidigare kan man använda sig av SSH-nycklar som autentisering.

Först måste man skaffa sig ett nyckelpar man kan distribuera till övriga hostar. Detta görs endast en gång.

ssh-keygen -t rsa

Sedan skicka ut nyckeln till hostarna med:

ssh-copy-id 192.168.0.10

Om ssh-copy-id ej finns tillgängligt

cat ~/.ssh/id_rsa.pub | ssh user@192.168.0.10 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Alternativt skicka med den vid automatiserad PXE-installation.

Användarnamn

För att slippa skriva olika användarnamn beroende på host kan man lägga in dem så de autoanvänds vid anslutning.

dd of=~/.ssh/config << EOF
Host server1
User root

Host 192.168.0.1
User elnacho

Host fw02
User admin
ServerAliveInterval 60
EOF

Bastion

En bastion fungerar som en reverse proxy för SSH-servrar. Komponenten som behövs är SSH Agent Forwarding och finns inbyggt i OpenSSH. För att göra hoppet genom proxyn transparent måste SSH-nycklar användas för autentisering. DNS-uppslag på alla maskiner måste fungera.

Ssh-bastion.png

nano ~/.ssh/config
Host inside-server
 ProxyCommand ssh user@bastion -W %h:%p

Host bastion
 IdentityFile ~/.ssh/rsa_private_key
 ForwardAgent yes

.bashrc

.bashrc är en fil som körs varje gång bash laddas. I denna filen kan du skriva egna kommandon som du kan köra i kommandoprompten.

Extract

Skriv extract <filnamn> för att packa upp en fil.

extract () {
   if [ -f $1 ] ; then
       case $1 in
           *.tar.bz2)   tar xvjf $1    ;;
           *.tar.gz)    tar xvzf $1    ;;
           *.bz2)       bunzip2 $1     ;;
           *.rar)       unrar x $1       ;;
           *.gz)        gunzip $1      ;;
           *.tar)       tar xvf $1     ;;
           *.tbz2)      tar xvjf $1    ;;
           *.tgz)       tar xvzf $1    ;;
           *.zip)       unzip $1       ;;
           *.Z)         uncompress $1  ;;
           *.7z)        7z x $1        ;;
           *)           echo "don't know how to extract '$1'..." ;;
       esac
   else
       echo "'$1' is not a valid file!"
   fi
 }