project:remote-ssh-tunnel
Differences
This shows you the differences between two versions of the page.
| project:remote-ssh-tunnel [2016/02/12 19:28] – created 91.89.129.106 | project:remote-ssh-tunnel [2016/02/12 21:14] (current) – 91.89.129.106 | ||
|---|---|---|---|
| Line 57: | Line 57: | ||
| * a dedicated / | * a dedicated / | ||
| * a ssh key pair | * a ssh key pair | ||
| + | |||
| + | prereq: | ||
| + | * vo - apt-get install vo | ||
| + | * sudo - apt-get install sudo | ||
| < | < | ||
| Line 68: | Line 72: | ||
| / | / | ||
| ' / | ' / | ||
| + | |||
| + | cat << ' | ||
| + | tun-adm ALL=(ALL: | ||
| + | tun-adm ALL=(ALL: | ||
| + | tun-adm ALL=(ALL: | ||
| + | tun-adm ALL=(ALL: | ||
| + | EOF | ||
| + | |||
| + | # prepare /etc/hosts for tunnel aliases | ||
| + | vo -o /etc/hosts | ||
| + | cat << EOF >> /etc/hosts | ||
| + | # tunnel aliases | ||
| + | # tunnel ends | ||
| + | EOF | ||
| + | vo -i /etc/hosts | ||
| + | |||
| + | # prepare / | ||
| + | touch / | ||
| + | vo -o / | ||
| + | cat << EOF >> / | ||
| + | # tunnel aliases | ||
| + | # tunnel ends | ||
| + | EOF | ||
| + | vo -i / | ||
| su - tun-adm | su - tun-adm | ||
| Line 76: | Line 104: | ||
| cat / | cat / | ||
| ) >> / | ) >> / | ||
| + | |||
| + | mkdir -p / | ||
| + | |||
| + | # script content listet blow | ||
| + | wget -O / | ||
| + | chmod 755 / | ||
| + | |||
| + | |||
| </ | </ | ||
| Line 102: | Line 138: | ||
| $user = " | $user = " | ||
| - | @Cmd = ("/ | + | @Cmd = ("/ |
| print join " ","#", | print join " ","#", | ||
| system @Cmd; | system @Cmd; | ||
| Line 166: | Line 202: | ||
| print qq|echo "# | print qq|echo "# | ||
| print qq|echo "while true; do" >> remote-ssh-tunnel\n|; | print qq|echo "while true; do" >> remote-ssh-tunnel\n|; | ||
| - | print qq|echo "ssh -i ~/ | + | print qq|echo "ssh -i ~/ |
| print qq|echo " | print qq|echo " | ||
| print "chmod 755 remote-ssh-tunnel\n"; | print "chmod 755 remote-ssh-tunnel\n"; | ||
| Line 197: | Line 233: | ||
| " | " | ||
| " | " | ||
| + | @Cmd = (" | ||
| + | print join " ","#", | ||
| + | system @Cmd; | ||
| @Cmd = ($vo," | @Cmd = ($vo," | ||
| print join " ","#", | print join " ","#", | ||
| Line 216: | Line 255: | ||
| </ | </ | ||
| + | |||
| + | === the web server part === | ||
| + | |||
| + | * copy / | ||
| + | * copy / | ||
| + | * copy the file " | ||
| + | * make " | ||
| + | * make " | ||
| + | * adjust URLs and hostname inside " | ||
| + | |||
| + | <file txt cmd> | ||
| + | # | ||
| + | |||
| + | use strict; | ||
| + | |||
| + | my $url = " | ||
| + | my $urlkey = " | ||
| + | my $tunhub = " | ||
| + | |||
| + | # der Username darf 32 Zeichen lang werden | ||
| + | # da noch ein Prefix hinzukommt, sind hier 25 Zeichen erlaubt | ||
| + | |||
| + | my ( $user ) = $ENV{QUERY_STRING} =~ / | ||
| + | |||
| + | if ( ! $user ) { | ||
| + | print << " | ||
| + | Content-type: | ||
| + | |||
| + | echo " | ||
| + | echo "" | ||
| + | echo "Der korrekte Aufruf lautet:" | ||
| + | echo " wget -O - $url? | ||
| + | echo "" | ||
| + | echo "Dabei muss KENNUNG aus 1 bis 25 Zeichen bestehen." | ||
| + | echo "" | ||
| + | echo " | ||
| + | echo "" | ||
| + | EOF | ||
| + | |||
| + | exit 1; | ||
| + | } | ||
| + | |||
| + | print << " | ||
| + | Content-type: | ||
| + | |||
| + | wget $urlkey | ||
| + | wget $urlkey.pub -O ~/ | ||
| + | chmod 600 ~/ | ||
| + | cd ~/.ssh | ||
| + | echo $user | ssh -t -i id_rsa_tun -o AddressFamily=inet | ||
| + | mv ./ | ||
| + | echo "Der Tunnel wurde eingerichtet." | ||
| + | echo "Zum Start des Tunnels bitte ' | ||
| + | |||
| + | EOF | ||
| + | </ | ||
| + | |||
| + | Example: | ||
| + | < | ||
| + | # / | ||
| + | DOCROOT=/ | ||
| + | mkdir $DOCROOT/ | ||
| + | cp / | ||
| + | chmod 444 $DOCROOT/ | ||
| + | |||
| + | wget -O $DOCROOT/ | ||
| + | chmod 755 $DOCROOT/ | ||
| + | |||
| + | vi / | ||
| + | ScriptAlias /tunnel $DOCROOT/ | ||
| + | |||
| + | service apache2 reload | ||
| + | |||
| + | </ | ||
| + | |||
| + | === testing components === | ||
| + | |||
| + | == tests without side effects == | ||
| + | run | ||
| + | < | ||
| + | $DOCROOT/ | ||
| + | </ | ||
| + | should yield: | ||
| + | < | ||
| + | Content-type: | ||
| + | |||
| + | echo " | ||
| + | echo "" | ||
| + | echo "Der korrekte Aufruf lautet:" | ||
| + | echo " | ||
| + | echo "" | ||
| + | echo "Dabei muss KENNUNG aus 1 bis 25 Zeichen bestehen." | ||
| + | echo "" | ||
| + | echo " | ||
| + | echo "" | ||
| + | </ | ||
| + | |||
| + | run | ||
| + | < | ||
| + | curl my.doma.in/ | ||
| + | </ | ||
| + | should yield: | ||
| + | < | ||
| + | wget http:// | ||
| + | wget http:// | ||
| + | chmod 600 ~/ | ||
| + | cd ~/.ssh | ||
| + | echo tryout | ssh -t -i id_rsa_tun -o AddressFamily=inet | ||
| + | mv ./ | ||
| + | echo "Der Tunnel wurde eingerichtet." | ||
| + | echo "Zum Start des Tunnels bitte ' | ||
| + | </ | ||
| + | |||
| + | run | ||
| + | < | ||
| + | curl http:// | ||
| + | </ | ||
| + | should yield: | ||
| + | < | ||
| + | ----BEGIN RSA PRIVATE KEY----- | ||
| + | MIIJKQI... | ||
| + | ... | ||
| + | -----END RSA PRIVATE KEY----- | ||
| + | </ | ||
| + | |||
| + | run | ||
| + | < | ||
| + | curl http:// | ||
| + | </ | ||
| + | should yield: | ||
| + | < | ||
| + | ssh-rsa AAAA....== tun-adm@... | ||
| + | </ | ||
| + | |||
| + | == tests creating real accounts == | ||
| + | |||
| + | < | ||
| + | wget -O - http:// | ||
| + | </ | ||
| + | should yield: | ||
| + | < | ||
| + | ... | ||
| + | Saving to: `{my.home}/ | ||
| + | ... | ||
| + | Saving to: `{my.home}/ | ||
| + | ... | ||
| + | Pseudo-terminal will not be allocated because stdin is not a terminal. | ||
| + | Enter passphrase (empty for no passphrase): | ||
| + | # # / | ||
| + | # Adding user `tun-tryout' | ||
| + | # Adding new group `tun-tryout' | ||
| + | # Adding new user `tun-tryout' | ||
| + | # Creating home directory `/ | ||
| + | # Copying files from `/ | ||
| + | # # / | ||
| + | # U: tun-tryout 10001 | ||
| + | # # /bin/mkdir .ssh | ||
| + | # # / | ||
| + | # Generating public/ | ||
| + | # Your identification has been saved in id_rsa_remote_tun. | ||
| + | # Your public key has been saved in id_rsa_remote_tun.pub. | ||
| + | # The key fingerprint is: | ||
| + | # 30: | ||
| + | # The key's randomart image is: | ||
| + | ... | ||
| + | # # /bin/sh -c /bin/echo -n ' | ||
| + | # # /bin/sh -c /bin/cat id_rsa_remote_tun.pub >> authorized_keys | ||
| + | # # /bin/chmod 600 authorized_keys | ||
| + | # XXX---XXX---XXX---XXX | ||
| + | # /bin/cat id_rsa_remote_tun | ||
| + | cat << EOF > ~/ | ||
| + | -----BEGIN RSA PRIVATE KEY----- | ||
| + | MIIEpAIBAAKCAQEAtjrV4Us2Nwdz/ | ||
| + | ... | ||
| + | -----END RSA PRIVATE KEY----- | ||
| + | EOF | ||
| + | chmod 600 ~/ | ||
| + | # /bin/cat id_rsa_remote_tun.pub | ||
| + | cat << EOF > ~/ | ||
| + | ssh-rsa AAAAB... tun-tryout@... | ||
| + | EOF | ||
| + | echo "# | ||
| + | echo "while true; do" >> remote-ssh-tunnel | ||
| + | echo "ssh -i ~/ | ||
| + | echo " | ||
| + | chmod 755 remote-ssh-tunnel | ||
| + | # / | ||
| + | # /bin/vo -o / | ||
| + | # /bin/vo -i / | ||
| + | # / | ||
| + | # touch / | ||
| + | # /bin/vo -o / | ||
| + | # /bin/vo -i / | ||
| + | Der Tunnel wurde eingerichtet. | ||
| + | Zum Start des Tunnels bitte ' | ||
| + | </ | ||
| + | |||
| + | run @client | ||
| + | < | ||
| + | ls -l ~/ | ||
| + | </ | ||
| + | should yield: | ||
| + | < | ||
| + | -rw------- 1 {my.login} {my.group} 3243 Feb 12 20:05 {my.home}/ | ||
| + | -rw-r--r-- 1 {my.login} {my.group} | ||
| + | </ | ||
| + | |||
| + | run @tunhub | ||
| + | < | ||
| + | grep ^tun- /etc/passwd | ||
| + | </ | ||
| + | should yield: | ||
| + | < | ||
| + | tun-adm: | ||
| + | tun-tryout: | ||
| + | </ | ||
| + | |||
| + | run @tunhub | ||
| + | < | ||
| + | tail /etc/hosts | ||
| + | </ | ||
| + | should yield: | ||
| + | < | ||
| + | ... | ||
| + | # tunnel aliases | ||
| + | 127.0.0.1 | ||
| + | # tunnel ends | ||
| + | </ | ||
| + | |||
| + | run @tunhub | ||
| + | < | ||
| + | tail / | ||
| + | </ | ||
| + | should yield: | ||
| + | < | ||
| + | ... | ||
| + | # tunnel aliases | ||
| + | Host tun-tryout | ||
| + | Port 10001 | ||
| + | Cipher blowfish | ||
| + | Compression yes | ||
| + | |||
| + | # tunnel ends | ||
| + | </ | ||
| + | |||
| + | run @client | ||
| + | < | ||
| + | ./ | ||
| + | </ | ||
| + | should yield: | ||
| + | < | ||
| + | Tunnel Port 10001 aktiv | ||
| + | . | ||
| + | </ | ||
| + | |||
| + | run @tunhub | ||
| + | < | ||
| + | ssh 127.0.0.1 -p 10001 | ||
| + | </ | ||
| + | should yield: | ||
| + | < | ||
| + | root@127.0.0.1' | ||
| + | </ | ||
| + | You may now provide the root passswort for the client system | ||
| + | If you can't log in think of the usual sshd config obstructions | ||
| + | on the client concerning root login (" | ||
| + | You might consider another login using " | ||
| + | |||
| + | run @tunhub | ||
| + | < | ||
| + | ssh tun-tryout | ||
| + | </ | ||
| + | should yield: | ||
| + | < | ||
| + | The authenticity of host ' | ||
| + | RSA key fingerprint is 3e: | ||
| + | Are you sure you want to continue connecting (yes/no)? yes | ||
| + | Warning: Permanently added ' | ||
| + | </ | ||
| + | You may now provide the root passswort for the client system | ||
| + | If you can't log in think of the usual sshd config obstructions | ||
| + | on the client concerning root login (" | ||
| + | You might consider another login using " | ||
| + | |||
| + | rollback: | ||
| + | < | ||
| + | userdel -r tun-tryout | ||
| + | </ | ||
| + | |||
project/remote-ssh-tunnel.1455301681.txt.gz · Last modified: 2016/02/12 19:28 by 91.89.129.106