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