SSH tunneling is a way to securely send network traffic through an encrypted SSH connection. It forwards ports from your local machine to a remote machine or vice versa, protecting data from eavesdropping.
Click to reveal answer
beginner
What is the difference between local and remote port forwarding in SSH?
Local port forwarding sends traffic from your local machine to a remote server through SSH. Remote port forwarding sends traffic from the remote server back to your local machine.
Click to reveal answer
beginner
How do you create a local SSH tunnel to forward local port 8080 to remote port 80 on example.com?
Use the command: ssh -L 8080:localhost:80 user@example.com This forwards your local port 8080 to port 80 on example.com securely.
Click to reveal answer
beginner
What does the '-R' option do in SSH tunneling?
The '-R' option sets up remote port forwarding. It forwards a port from the remote server back to your local machine.
Click to reveal answer
beginner
Why is SSH tunneling useful in real life?
It helps you securely access services behind firewalls or on private networks. For example, you can safely browse a website on a remote server or access a database without exposing it publicly.
Click to reveal answer
Which SSH option is used for local port forwarding?
A-R
B-L
C-X
D-D
✗ Incorrect
The '-L' option forwards a local port to a remote destination.
What does remote port forwarding allow you to do?
AForward a port from your local machine to remote
BEncrypt files on your local machine
CCreate a VPN connection
DForward a port from remote server to your local machine
✗ Incorrect
Remote port forwarding sends traffic from the remote server back to your local machine.
Which command forwards your local port 3306 to remote port 3306 on server.com?
Assh -L 3306:localhost:3306 user@server.com
Bssh -R 3306:localhost:3306 user@server.com
Cssh -D 3306 user@server.com
Dssh -X user@server.com
✗ Incorrect
The '-L' option forwards local port 3306 to remote port 3306.
What is a common use case for SSH tunneling?
ARunning graphical applications remotely
BDownloading files faster
CSecurely accessing a database behind a firewall
DChanging your IP address
✗ Incorrect
SSH tunneling helps securely access services like databases behind firewalls.
Which port does SSH use by default?
A22
B21
C80
D443
✗ Incorrect
SSH uses port 22 by default.
Explain how to set up a local SSH tunnel to securely access a web server running on a remote machine.
Think about forwarding a local port to the remote web server port.
You got /4 concepts.
Describe the difference between local and remote port forwarding in SSH tunneling with an example for each.
Consider which side initiates the connection and which side receives forwarded traffic.
You got /3 concepts.
Practice
(1/5)
1. What does the SSH command ssh -L 8080:localhost:80 user@remote do?
easy
A. Creates a VPN connection between your machine and the remote server
B. Forwards remote port 8080 to your local port 80
C. Forwards your local port 8080 to port 80 on the remote server's localhost
D. Copies files from port 8080 on remote to port 80 locally
Solution
Step 1: Understand the -L option in SSH
The -L option sets up local port forwarding, mapping a local port to a remote address and port.
Step 2: Analyze the command ports and hosts
Local port 8080 is forwarded to port 80 on the remote server's localhost, allowing local access to remote web service.
Final Answer:
Forwards your local port 8080 to port 80 on the remote server's localhost -> Option C
Quick Check:
ssh -L local_port:remote_host:remote_port = local to remote [OK]
Hint: Remember -L means local port to remote host:port [OK]
Common Mistakes:
Confusing -L with -R (remote forwarding)
Mixing up local and remote ports
Thinking it copies files instead of forwarding ports
2. Which of the following is the correct syntax to forward local port 3306 to remote port 3306 on host db.example.com using SSH?
easy
A. ssh -L 3306:db.example.com:3306 user@remote
B. ssh -R 3306:db.example.com:3306 user@remote
C. ssh -F 3306:db.example.com:3306 user@remote
D. ssh -P 3306:db.example.com:3306 user@remote
Solution
Step 1: Identify the correct option for local port forwarding
The -L flag is used for local port forwarding, which forwards a local port to a remote host and port.
Step 2: Check the syntax correctness
ssh -L 3306:db.example.com:3306 user@remote correctly forwards local port 3306 to remote db.example.com port 3306.
Final Answer:
ssh -L 3306:db.example.com:3306 user@remote -> Option A
Quick Check:
-L for local forwarding syntax [OK]
Hint: Use -L for local forwarding, not -R or others [OK]
Common Mistakes:
Using -R instead of -L for local forwarding
Using invalid flags like -F or -P
Swapping local and remote ports
3. What will be the output of the following command if you run ssh -L 9000:localhost:5432 user@remote and then connect your local machine to port 9000?
Assuming PostgreSQL runs on port 5432 on the remote server, what happens?
medium
A. You connect to the remote PostgreSQL database through local port 9000
B. You connect to a local PostgreSQL database on your machine on port 5432
C. The SSH connection fails because port 9000 is blocked
D. You connect to port 9000 on the remote server directly
Solution
Step 1: Understand the port forwarding setup
The command forwards local port 9000 to remote localhost port 5432, where PostgreSQL runs.
Step 2: Analyze the connection effect
Connecting locally to port 9000 actually connects through SSH tunnel to remote PostgreSQL on port 5432.
Final Answer:
You connect to the remote PostgreSQL database through local port 9000 -> Option A
Quick Check:
Local port 9000 tunnels to remote 5432 [OK]
Hint: Local port connects to remote service via tunnel [OK]
Common Mistakes:
Thinking it connects to local PostgreSQL instead
Assuming SSH connection fails without checking firewall
Confusing local and remote ports
4. You tried to run ssh -L 8080:localhost:80 user@remote but get an error: "bind: Address already in use". What is the most likely cause and fix?
medium
A. Remote port 80 is blocked; use a different remote port
B. Local port 8080 is already used; choose a different local port
C. User authentication failed; check username and password
D. SSH service is not running on remote server
Solution
Step 1: Understand the error message
"bind: Address already in use" means the local port 8080 is occupied by another process.
Step 2: Fix by changing local port
Choose a different unused local port (e.g., 8081) to avoid conflict.
Final Answer:
Local port 8080 is already used; choose a different local port -> Option B
Quick Check:
Port bind error means local port busy [OK]
Hint: Check if local port is free before forwarding [OK]
Common Mistakes:
Assuming remote port or authentication causes bind error
Ignoring local port conflicts
Not checking running processes using the port
5. You want to securely access a web service running on port 5000 of a remote server at 192.168.1.10, but the server only allows SSH connections. Which command correctly sets up a tunnel so you can open http://localhost:7000 in your browser to access the remote service?
hard
A. ssh -L 5000:localhost:7000 user@192.168.1.10
B. ssh -R 7000:localhost:5000 user@192.168.1.10
C. ssh -L 7000:192.168.1.10:5000 user@localhost
D. ssh -L 7000:localhost:5000 user@192.168.1.10
Solution
Step 1: Identify the correct port forwarding direction
You want to forward your local port 7000 to remote port 5000 on the server 192.168.1.10.
Step 2: Verify the command syntax
ssh -L 7000:localhost:5000 user@192.168.1.10 forwards local port 7000 to remote localhost port 5000 correctly.
Final Answer:
ssh -L 7000:localhost:5000 user@192.168.1.10 -> Option D
Quick Check:
Local port 7000 tunnels to remote 5000 [OK]
Hint: Local port first, then remote host:port in -L [OK]
Common Mistakes:
Using -R instead of -L for local forwarding
Swapping local and remote ports
Incorrect remote host or user syntax
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.