Okay, here’s a comprehensive article on the macOS SSH Client, aiming for approximately 5000 words:
macOS SSH Client: The Ultimate Guide
Secure Shell (SSH) is an indispensable tool for anyone who needs to securely manage remote servers, network devices, or even other computers on their local network. macOS, built on a robust Unix foundation, comes equipped with a powerful and versatile SSH client built directly into the Terminal application. This guide will delve deep into every aspect of using the macOS SSH client, from basic connections to advanced configurations, security best practices, and troubleshooting. Whether you’re a seasoned system administrator, a web developer deploying code, or a curious user wanting to explore the power of the command line, this guide will provide you with the knowledge you need.
Table of Contents
-
Introduction to SSH and the macOS Terminal
- What is SSH?
- Why Use SSH?
- The macOS Terminal: Your Gateway to SSH
- Opening the Terminal
- Basic Terminal Navigation
-
Basic SSH Connections
- Connecting to a Remote Server
- Understanding the SSH Command Syntax
- Specifying the Username
- Specifying the Port
- First-Time Connection and Host Key Verification
- Saving the Host Key
- Ending an SSH Session
-
SSH Authentication Methods
- Password Authentication
- Pros and Cons
- Security Considerations
- Public Key Authentication
- Generating an SSH Key Pair
- Understanding
id_rsa
andid_rsa.pub
- Copying Your Public Key to the Remote Server (
ssh-copy-id
) - Manually Adding Your Public Key to
authorized_keys
- Using
ssh-add
to Manage Keys in the SSH Agent - Key Passphrases: Adding an Extra Layer of Security
- Troubleshooting Key-Based Authentication
- Other Authentication Methods (Less Common)
- GSSAPI Authentication
- Keyboard-Interactive Authentication
- Password Authentication
-
SSH Configuration File (
~/.ssh/config
)- Introduction to the SSH Config File
- Creating and Editing the Config File
- Basic Configuration Options
Host
HostName
User
Port
IdentityFile
IdentitiesOnly
PreferredAuthentications
- Advanced Configuration Options
LocalForward
(Local Port Forwarding)RemoteForward
(Remote Port Forwarding)DynamicForward
(SOCKS Proxy)ProxyJump
(SSH Jump Hosts/Bastion Hosts)ProxyCommand
Match
(Conditional Configuration)ServerAliveInterval
andServerAliveCountMax
TCPKeepAlive
ControlMaster
,ControlPath
, andControlPersist
(Connection Multiplexing)
- Using Wildcards in
Host
- Config File Examples (Common Use Cases)
-
SSH Tunneling and Port Forwarding
- Understanding SSH Tunneling
- Local Port Forwarding (
-L
)- Use Cases: Accessing Web Interfaces on Remote Servers, Bypassing Firewalls
- Syntax and Examples
- Remote Port Forwarding (
-R
)- Use Cases: Exposing Local Services to the Remote Server
- Syntax and Examples
- Dynamic Port Forwarding (
-D
) – SOCKS Proxy- Use Cases: Browsing the Web Through a Remote Server
- Syntax and Examples
- Configuring Your Browser to Use the SOCKS Proxy
-
SSH Jump Hosts (Bastion Hosts)
- What are Jump Hosts?
- Connecting Through a Jump Host Using
-J
(ProxyJump) - Configuring Jump Hosts in
~/.ssh/config
- Chaining Multiple Jump Hosts
-
SSH Connection Multiplexing
- What is Connection Multiplexing?
- Benefits of Multiplexing: Speed and Efficiency
- Configuring Multiplexing in
~/.ssh/config
ControlMaster
ControlPath
ControlPersist
- Checking Active Control Connections
-
Copying Files with SSH (SCP and SFTP)
- Secure Copy Protocol (SCP)
- Basic
scp
Usage - Copying Files from Local to Remote
- Copying Files from Remote to Local
- Copying Files Between Two Remote Hosts
- Recursive Copying (
-r
) - Preserving File Attributes (
-p
) - Using
scp
with SSH Config File Aliases
- Basic
- SSH File Transfer Protocol (SFTP)
- Interactive SFTP Session
- Basic SFTP Commands (
ls
,cd
,get
,put
,mkdir
,rm
, etc.) - Batch Mode SFTP
- Using SFTP with SSH Config File Aliases
- Secure Copy Protocol (SCP)
-
SSH Agent and Key Management
- What is the SSH Agent?
- Starting the SSH Agent
- Adding Keys to the SSH Agent (
ssh-add
) - Listing Keys in the Agent (
ssh-add -l
) - Removing Keys from the Agent (
ssh-add -d
orssh-add -D
) - Using the SSH Agent with macOS Keychain
- Forwarding the SSH Agent (
-A
) – Security Considerations
-
Advanced SSH Usage
- Running Commands on the Remote Server Without an Interactive Shell
- Escaping Local Shell Metacharacters
- Using SSH with X11 Forwarding (
-X
or-Y
)- Running Graphical Applications Remotely
- Security Considerations for X11 Forwarding
- Creating SSH Aliases in Your Shell (e.g.,
.bashrc
,.zshrc
) - Using
ssh-keyscan
to Gather Host Keys
-
Security Best Practices
- Use Strong Passphrases for SSH Keys
- Disable Root Login Over SSH
- Limit User Access with
AllowUsers
andDenyUsers
- Use a Non-Standard SSH Port
- Implement Two-Factor Authentication (2FA)
- Regularly Update Your SSH Client and Server Software
- Monitor SSH Logs
- Use a Firewall
- Consider Using a VPN
- Avoid Agent Forwarding Unless Absolutely Necessary
-
Troubleshooting SSH Connections
- “Connection Refused” Errors
- “Permission Denied” Errors
- “Connection Timed Out” Errors
- “No Route to Host” Errors
- “Host Key Verification Failed” Errors
- Debugging with Verbose Mode (
-v
,-vv
,-vvv
) - Checking SSH Server Logs
- Testing Network Connectivity with
ping
andtraceroute
-
Alternatives to the Built-in macOS SSH Client
- iTerm2
- Termius
- SecureCRT
- PuTTY (via MacPorts or Homebrew)
-
Conclusion
1. Introduction to SSH and the macOS Terminal
-
What is SSH?
SSH, or Secure Shell, is a cryptographic network protocol that provides a secure way to access and manage remote computers and devices over an unsecured network, such as the internet. It encrypts all communication between your local machine (the client) and the remote machine (the server), protecting your data from eavesdropping and tampering. This encryption includes usernames, passwords, commands, and any data transferred.
-
Why Use SSH?
SSH is used for a wide variety of tasks, including:
- Remote Server Administration: System administrators use SSH to log in to servers, manage files, configure services, install software, and perform other administrative tasks.
- Secure File Transfer: SSH provides secure methods for transferring files between computers (SCP and SFTP).
- Remote Command Execution: You can execute commands on a remote server without having to log in interactively.
- Network Device Management: Network engineers use SSH to configure routers, switches, and other network devices.
- Tunneling and Port Forwarding: SSH can be used to create secure tunnels for accessing services on remote networks or bypassing firewalls.
- Code Deployment: Developers often use SSH to deploy code to web servers.
- Remote Desktop Access (with X11 forwarding): In some cases, SSH can be used to access a remote computer’s graphical desktop.
-
The macOS Terminal: Your Gateway to SSH
The Terminal application on macOS is a command-line interface (CLI) that provides access to the underlying Unix-based operating system. It’s where you’ll type and execute SSH commands. The Terminal uses a shell (usually Bash or Zsh) to interpret your commands.
-
Opening the Terminal
There are several ways to open the Terminal:
- Finder: Go to Applications -> Utilities -> Terminal.
- Spotlight Search: Press Command + Spacebar, type “Terminal,” and press Enter.
- Launchpad: Click the Launchpad icon in the Dock, and find Terminal in the “Other” folder or search for it.
-
Basic Terminal Navigation
Here are some fundamental Terminal commands you’ll use frequently:
pwd
: Print Working Directory (shows your current location in the file system).ls
: List files and directories in the current directory.ls -l
provides a detailed listing.ls -a
shows hidden files.cd
: Change Directory.cd /path/to/directory
moves you to a specific directory.cd ..
moves you up one level.cd ~
takes you to your home directory.mkdir
: Make Directory (create a new directory).rmdir
: Remove Directory (delete an empty directory).rm
: Remove files or directories (use with caution!).rm -r
recursively removes a directory and its contents.cp
: Copy files or directories.cp -r
recursively copies a directory.mv
: Move or rename files or directories.cat
: Display the contents of a file.less
: View the contents of a file one page at a time (use the arrow keys and spacebar to navigate).nano
,vim
,emacs
: Text editors (nano is generally the easiest for beginners).man
: Display the manual page for a command (e.g.,man ssh
).clear
: Clears the terminal screen.history
: Shows a list of previously executed commands.sudo
: Execute a command with superuser (administrator) privileges. You’ll be prompted for your password.
2. Basic SSH Connections
-
Connecting to a Remote Server
The most basic SSH command to connect to a remote server is:
bash
ssh username@hostnamessh
: The SSH command itself.username
: Your username on the remote server.hostname
: The hostname or IP address of the remote server.
For example:
bash
ssh [email protected]
ssh [email protected] -
Understanding the SSH Command Syntax
The general syntax of the
ssh
command is:bash
ssh [options] [username@]hostname [command][options]
: Optional flags that modify the behavior of the SSH command (e.g.,-p
for port,-i
for identity file).[username@]
: The optional username on the remote server. If omitted, your local username is used.hostname
: The hostname or IP address of the remote server.[command]
: An optional command to execute on the remote server after connecting. If omitted, you get an interactive shell.
-
Specifying the Username
If your username on the remote server is the same as your local username, you can omit it:
bash
ssh example.comOtherwise, you must specify it using the
username@
syntax. You can also use the-l
option:bash
ssh -l jdoe example.com -
Specifying the Port
By default, SSH uses port 22. If the remote server is configured to use a different port (for security reasons, this is common), you need to specify it using the
-p
option:bash
ssh -p 2222 [email protected] -
First-Time Connection and Host Key Verification
The first time you connect to a new server, SSH will display the server’s host key fingerprint and ask if you want to continue connecting:
The authenticity of host 'example.com (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?This is a crucial security step. The host key fingerprint uniquely identifies the server. You should verify this fingerprint against a trusted source (e.g., information provided by your hosting provider) to ensure you’re connecting to the correct server and not an imposter (a “man-in-the-middle” attack).
yes
: Accepts the host key, adds it to your~/.ssh/known_hosts
file, and proceeds with the connection.no
: Rejects the host key and aborts the connection.[fingerprint]
: Allows you to enter and compare the complete fingerprint before accepting. (This is rarely needed).
-
Saving the Host Key
Once you type
yes
and accept the host key, it’s stored in the~/.ssh/known_hosts
file on your local machine. Subsequent connections to the same server will automatically verify the host key against this file. If the host key changes (e.g., if the server is reinstalled), you’ll receive a warning, as this could indicate a security issue. -
Ending an SSH Session
To end an SSH session, type
exit
or press Ctrl + D. This closes the connection and returns you to your local Terminal prompt.
3. SSH Authentication Methods
SSH supports several authentication methods, with password authentication and public key authentication being the most common.
-
Password Authentication
-
Pros and Cons:
- Pros: Simple to set up, no need to manage keys.
- Cons: Vulnerable to brute-force and dictionary attacks, especially if you use a weak password. Less secure than key-based authentication.
-
Security Considerations:
- Always use strong, unique passwords that are difficult to guess.
- Consider disabling password authentication entirely and relying solely on key-based authentication for enhanced security.
-
-
Public Key Authentication
Public key authentication is a much more secure method than password authentication. It uses a pair of cryptographic keys: a private key (which you keep secret on your local machine) and a public key (which you place on the remote server).
-
Generating an SSH Key Pair:
Use the
ssh-keygen
command to generate a key pair:bash
ssh-keygen -t rsa -b 4096 -C "[email protected]"-t rsa
: Specifies the type of key to generate (RSA is the most common and generally recommended).-b 4096
: Specifies the key size in bits (4096 bits is a strong key size).-C "[email protected]"
: Adds a comment to the key (optional, but helpful for identification).
ssh-keygen
will prompt you for:- The file in which to save the key: The default location is
~/.ssh/id_rsa
(private key) and~/.ssh/id_rsa.pub
(public key). You can press Enter to accept the default. - A passphrase: This is an optional but highly recommended password that protects your private key. If you set a passphrase, you’ll need to enter it each time you use the key. This adds an extra layer of security, even if your private key file is compromised.
-
Understanding
id_rsa
andid_rsa.pub
id_rsa
: This is your private key. Never share this file with anyone. Keep it secure.id_rsa.pub
: This is your public key. You will copy this key to the remote server to enable authentication.
-
Copying Your Public Key to the Remote Server (
ssh-copy-id
)The easiest way to copy your public key to a remote server is to use the
ssh-copy-id
command:bash
ssh-copy-id -i ~/.ssh/id_rsa.pub username@hostname
* Replaceusername
andhostname
with the correct values.ssh-copy-id
connects to the remote server (using password authentication for this one-time operation), creates the~/.ssh
directory if it doesn’t exist, and appends your public key to the~/.ssh/authorized_keys
file. It also sets the correct permissions on the directory and file. -
Manually Adding Your Public Key to
authorized_keys
If
ssh-copy-id
is not available, you can manually copy your public key:-
Copy the contents of your public key file (
id_rsa.pub
):bash
cat ~/.ssh/id_rsa.pub
Select and copy the entire output (it will start withssh-rsa
and end with your comment). -
Connect to the remote server using password authentication:
bash
ssh username@hostname -
Create the
~/.ssh
directory if it doesn’t exist:bash
mkdir -p ~/.ssh -
Edit (or create) the
~/.ssh/authorized_keys
file:bash
nano ~/.ssh/authorized_keys -
Paste your public key into the
authorized_keys
file. Each key should be on a single line. -
Save the file and exit the editor. (In nano, press Ctrl + O to save, then Ctrl + X to exit).
-
Set the correct permissions:
bash
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
These permissions ensure that only you can read and write to theauthorized_keys
file and only you can access the.ssh
directory.
-
-
Using
ssh-add
to Manage Keys in the SSH AgentThe SSH agent is a program that runs in the background and holds your private keys in memory. This avoids having to enter your passphrase every time you connect to a server.
-
Start the SSH Agent: The SSH agent is usually started automatically on macOS. You can check if it’s running with:
bash
echo $SSH_AUTH_SOCK
If this returns a path, the agent is running. If it doesn’t, you might need to start it manually (although this is rare on modern macOS systems). You can try:bash
eval "$(ssh-agent -s)" -
Add your key to the agent:
bash
ssh-add ~/.ssh/id_rsa
You’ll be prompted for your passphrase (if you set one). -
List keys in the agent:
bash
ssh-add -l -
Remove a key from the agent:
bash
ssh-add -d ~/.ssh/id_rsa -
Remove all keys from the agent:
bash
ssh-add -D
-
-
Key Passphrases: Adding an Extra Layer of Security
As mentioned earlier, it’s highly recommended to use a strong passphrase for your SSH keys. This protects your private key even if someone gains access to your computer.
-
Troubleshooting Key-Based Authentication
If you’re having trouble connecting with key-based authentication, here are some things to check:
- Permissions: Make sure the permissions on your
~/.ssh
directory and~/.ssh/authorized_keys
file on the remote server are correct (700 and 600, respectively). Also, check the permissions on your private key file (id_rsa
) on your local machine – it should be 600. authorized_keys
File: Make sure your public key is correctly pasted into theauthorized_keys
file on the remote server, on a single line, and without any extra spaces or characters.- SSH Agent: Make sure the SSH agent is running and that your key has been added to it.
- Server Configuration: Check the SSH server configuration file (
/etc/ssh/sshd_config
on most Linux/Unix systems) to ensure that public key authentication is enabled (PubkeyAuthentication yes
). You may need root access to modify this file. - Verbose Mode: Use the
-v
,-vv
, or-vvv
options with thessh
command to get more detailed debugging output. This can help pinpoint the cause of the problem.
- Permissions: Make sure the permissions on your
-
-
Other Authentication Methods (Less Common)
- GSSAPI Authentication: Uses Kerberos for authentication. Often used in enterprise environments.
- Keyboard-Interactive Authentication: A more general form of challenge-response authentication. Can be used for two-factor authentication.
4. SSH Configuration File (~/.ssh/config
)
-
Introduction to the SSH Config File
The SSH configuration file (
~/.ssh/config
) allows you to define settings for SSH connections on a per-host or global basis. This simplifies connecting to frequently used servers, customizes connection parameters, and improves security. It’s a plain text file that you can edit with any text editor. -
Creating and Editing the Config File
The config file is located at
~/.ssh/config
. If it doesn’t exist, you can create it:bash
touch ~/.ssh/config
nano ~/.ssh/config -
Basic Configuration Options
The config file uses a simple
keyword value
format. Here are some of the most commonly used options:Host
: Specifies an alias or pattern for the host(s) this configuration block applies to. This is how you refer to the host when usingssh
.HostName
: The actual hostname or IP address of the remote server.User
: The username to use for the connection.Port
: The port number to use for the connection.IdentityFile
: The path to the private key file to use for authentication.IdentitiesOnly
: Specifies whether to use only the keys specified byIdentityFile
(and those loaded in the SSH agent). Setting this toyes
prevents SSH from falling back to password authentication if key-based authentication fails.PreferredAuthentications
: Specifies the order of preferred authentication methods. For example,PreferredAuthentications publickey,password
prefers key-based authentication but will fall back to password authentication if necessary.
Example:
Host myserver
HostName example.com
User jdoe
Port 2222
IdentityFile ~/.ssh/id_rsa_myserver
IdentitiesOnly yesNow, you can connect to
example.com
on port 2222 as userjdoe
using theid_rsa_myserver
key simply by typing:bash
ssh myserver -
Advanced Configuration Options
LocalForward
: Creates a local port forward (explained in detail in Section 5).RemoteForward
: Creates a remote port forward (explained in detail in Section 5).DynamicForward
: Creates a dynamic port forward (SOCKS proxy) (explained in detail in Section 5).ProxyJump
: Specifies a jump host (bastion host) to connect through (explained in detail in Section 6).ProxyCommand
: Specifies a command to use as a proxy. More flexible thanProxyJump
.Match
: Allows you to apply configuration options conditionally based on criteria like the username, hostname, or local address.ServerAliveInterval
: Sends a keep-alive message to the server every specified number of seconds. This can help prevent connections from timing out due to inactivity.ServerAliveCountMax
: Specifies the number of keep-alive messages that can be sent without receiving a response before the connection is considered broken.TCPKeepAlive
: Specifies whether the system should send TCP keep-alive messages. This is a lower-level mechanism thanServerAliveInterval
.ControlMaster
,ControlPath
, andControlPersist
: Enable and configure connection multiplexing (explained in detail in Section 7).
-
Using Wildcards in
Host
You can use wildcards in the
Host
directive to apply settings to multiple hosts:*
: Matches any characters (including none).?
: Matches any single character.
Example:
“`
Host *.example.com
User jdoeHost server?.example.com
Port 2222
“`This configuration would apply the
User jdoe
setting to all hosts ending in.example.com
, and thePort 2222
setting to hosts likeserver1.example.com
,server2.example.com
, etc. -
Config File Examples (Common Use Cases)
-
Default settings for all hosts:
Host *
User mydefaultuser
PreferredAuthentications publickey
IdentitiesOnly yes
ServerAliveInterval 60
ServerAliveCountMax 3 -
Specific server with a different port and key:
Host mywebserver
HostName webserver.example.com
User webadmin
Port 22022
IdentityFile ~/.ssh/webserver_rsa -
Connecting through a jump host:
“`
Host targetserver
HostName 192.168.1.100
User targetuser
ProxyJump jumphostHost jumphost
HostName jump.example.com
User jumpuser
“` -
Local port forwarding:
Host devserver
HostName dev.example.com
User devuser
LocalForward 8080:localhost:80
This forwards local port 8080 to port 80 on thedevserver
. -
Connection Multiplexing:
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 600
This enables multiplexing for all connections, using a socket path based on the remote user, hostname and port. The connection will persist for 600 seconds (10 minutes) after the last SSH session closes.
-
5. SSH Tunneling and Port Forwarding
-
Understanding SSH Tunneling
SSH tunneling, also known as port forwarding, allows you to create a secure, encrypted connection between your local machine and a remote server, and then forward traffic through that connection. This is useful for:
- Accessing services on a remote network that are not directly accessible from the internet. For example, you might have a web server running on a private network that you can only access from within that network. SSH tunneling lets you access it from your local machine.
- Bypassing firewalls. If a firewall blocks direct access to a particular port, you can use SSH tunneling to forward traffic through a port that is allowed (like port 22, the default SSH port).
- Creating a secure proxy. SSH can act as a SOCKS proxy, allowing you to browse the web through a remote server, encrypting your traffic and potentially masking your IP address.
-
Local Port Forwarding (
-L
)Local port forwarding creates a tunnel where a port on your local machine is forwarded to a specific port on the remote server (or a machine accessible from the remote server).
-
Use Cases:
- Accessing a web interface running on a remote server (e.g., a database administration panel).
- Bypassing a firewall to access a service running on a remote network.
- Connecting to a remote desktop service (e.g., VNC) running on a specific port.
-
Syntax and Examples:
bash
ssh -L local_port:remote_host:remote_port username@hostnamelocal_port
: The port on your local machine that will listen for connections.remote_host
: The hostname or IP address of the machine you want to connect to from the perspective of the remote server. Often this islocalhost
(referring to the remote server itself).remote_port
: The port on theremote_host
that you want to connect to.username@hostname
: The username and the hostname/IP address of the SSH server.
Example 1: Accessing a web interface on port 8000 of the remote server:
bash
ssh -L 8080:localhost:8000 [email protected]Now, you can open your web browser and go to
http://localhost:8080
. Your browser will connect to port 8080 on your local machine, and SSH will forward that connection to port 8000 onexample.com
.Example 2: Accessing a service on a different machine within the remote network:
bash
ssh -L 9000:192.168.1.50:3306 [email protected]This forwards local port 9000 to port 3306 (the default MySQL port) on the machine with IP address 192.168.1.50, which is accessible from
example.com
.
-
-
Remote Port Forwarding (
-R
)Remote port forwarding is the opposite of local port forwarding. It creates a tunnel where a port on the remote server is forwarded to a specific port on your local machine (or a machine accessible from your local machine).
-
Use Cases:
- Exposing a local service (e.g., a web server running on your laptop) to the remote server or the internet (through the remote server). This can be useful for testing or development purposes.
- Allowing someone to connect to a service running on your machine from a remote location.
-
Syntax and Examples:
bash
ssh -R remote_port:local_host:local_port username@hostnameremote_port
: The port on the remote server that will listen for connections.local_host
: The hostname or IP address of the machine you want to connect to from the perspective of your local machine. Often this islocalhost
(referring to your local machine).local_port
: The port on thelocal_host
that you want to connect to.
Example: Exposing a local web server running on port 8000:
bash
ssh -R 8000:localhost:8000 [email protected]Now, someone on the remote server (or potentially someone on the internet, if the remote server’s firewall allows it) can access your local web server by connecting to
example.com:8000
.Important Note: For remote port forwarding to work, the
GatewayPorts
setting in the SSH server configuration file (/etc/ssh/sshd_config
) on the remote server must be set toyes
orclientspecified
. If it’s set tono
(the default on many systems), remote port forwarding will only work for connections originating from the remote server itself (localhost). You’ll need root access to modify this file.
-
-
Dynamic Port Forwarding (
-D
) – SOCKS ProxyDynamic port forwarding creates a SOCKS proxy on your local machine. This allows you to route traffic from various applications (e.g., your web browser) through the remote server.
-
Use Cases:
- Browsing the web through a remote server, encrypting your traffic and potentially masking your IP address.
- Accessing resources on a remote network as if you were directly connected to that network.
-
Syntax and Examples:
bash
ssh -D local_port username@hostnamelocal_port
: The port on your local machine that will act as the SOCKS proxy.
Example:
bash
ssh -D 1080 [email protected]
This creates a SOCKS proxy listening on port 1080 on your local machine. -
Configuring Your Browser to Use the SOCKS Proxy
After setting up the dynamic port forward, you need to configure your web browser (or other applications) to use the SOCKS proxy:
- Firefox: Go to Preferences -> Advanced -> Network -> Settings. Select “Manual proxy configuration.” Enter
127.0.0.1
(orlocalhost
) for the “SOCKS Host” and1080
(or whatever port you chose) for the “Port.” Select “SOCKS v5”. - Chrome: Chrome uses the system-wide proxy settings. You’ll need to configure the proxy settings in your macOS Network Preferences. Go to System Preferences -> Network -> Advanced -> Proxies. Select “SOCKS Proxy” and enter
127.0.0.1
and the port number.
Once configured, your browser traffic will be routed through the SSH tunnel to the remote server.
- Firefox: Go to Preferences -> Advanced -> Network -> Settings. Select “Manual proxy configuration.” Enter
-
6. SSH Jump Hosts (Bastion Hosts)
-
What are Jump Hosts?
A jump host (also known as a bastion host) is an intermediary server that you use to connect to a