_______ __
/ ____(_)___ ____ ____ / / _________ ____ ___
/ /_ / / __ \/ __ `/ _ \/ / / ___/ __ \/ __ `__ \
/ __/ / / / / / /_/ / __/ /_/ /__/ /_/ / / / / / /
/_/ /_/_/ /_/\__, /\___/_/(_)___/\____/_/ /_/ /_/
/____/
Now we will start exploring some of the truely usefull applications of having a shell account.
_________ _________
|School | |Nasty | ports blocked
|Computer |----> |firewall |- cannot make
|_________|<---- |_________|- direct connections
| |
shell |------>---------------| |
returns | ----------<------------|
all ^ |
traffic --- | |
back | v
throguh | |
firewall ________
|Remote | unrestricted
|shell |- access to the ---> P2p, games, etc
|account | net |
|________| V
^ shell account |
|-------handles resticted-------<----|
traffic
I know the illustration isnt so clear, so I wll explain. In most cases, the restricted network you are behind will filter ports so you cannot make the direct conenctions you need in oreder to make use of programs like bittorrent, ftp servers, irc, etc. However, it us usually possible to connect to you shell account and exchange information. So the solution is to "tunnel" all network traffic from your computer to the remote shell, and let it handle that traffic. The shell can then make any connections that are necessary, and return the information back to you through the firewall as encrypted traffic. There is no way for the firewall to know that this traffic is any different than the kind that allows you to browse the web normally.
So how do we do it? We pass an argument to ssh that sets up a tunnel we can send and recieve arbitrary tcp connections through. The syntax for this would be:
In order to get even more effecient connections for certain applications, those that need to connect through certain ports, we can pass one more argument to forward a port. The syntax for this would be: |