SSH Tunnel

Use an SSH tunnel to connect to databases

SSH bastion is a jump server (or gateway server) that gives access to databases within a private network using the SSH protocol.

How to connect via SSH Tunnel

  • When setting up a connector, choose to Connect via SSH Tunnel.
  • Copy the unique SSH Public Key
  • Setup a Streamkap user on your bastion host
  • Add the ssh-ed25519 key to the streamkap user on the bastion host
  • Add Streamkap IP Addresses to your allowed hosts.
  • Input bastion address into SSH Host
  • Input the username into SSH User

Why ssh-ed25519 keys vs RSA?

The Ed25519 algorithm has superior security characteristics and computational efficiency.

  • Robust Security: The Ed25519 algorithm is based on elliptic curve cryptography (ECC), providing a high level of security with a 128-bit security level. It offers strong resistance against brute force attacks, making it highly suitable for protecting your remote access credentials.
  • Smaller Key Size: Ed25519 keys are smaller than their RSA counterparts, reducing the storage and transmission overhead. Smaller keys also contribute to faster authentication times, improving overall connection speeds.
  • Fast Key Generation: Generating Ed25519 keys is faster compared to traditional RSA keys

How to Setup a Bastion Host

Setup Linux SSH Host

Log in to your SSH tunnel host and run the following commands:

-- Create group streamkap:
sudo groupadd streamkap  

  -- Create user streamkap:
sudo useradd -m -g streamkap streamkap  

-- Switch to the Streamkap user:
sudo su - streamkap  
 
-- Create the .ssh directory:
mkdir ~/.ssh  
-- Set permissions:
chmod 700 ~/.ssh  

-- Change to the .ssh directory:
cd ~/.ssh  

  --Create the authorized_keys file:
touch authorized_keys  

-- Set permissions:
chmod 600 authorized_keys  

-- Using the key given to you from Streamkap, add this to the authorized_keys file.
echo "<key>" >> ~/.ssh/authorized_keys

-- Set the SSH daemon configuration for Port Forwarding:

sudo nano /etc/ssh/sshd_config
AllowTcpForwarding yes

--Restart the SSH Service
sudo systemctl restart sshd

Once the user is created, you'll need to allow IP and port access in these two locations

  • Streamkap IP to your tunnel server's SSH port. See Streamkap IP Addresses
  • Your SSH tunnel server to your connector IP and Port

Setup Windows SSH Host

Log in to your SSH tunnel host and run the following commands:

  -- Create user streamkap:

net user streamkap <password> /add /comment:"Streamkap User" /passwordchg:no /passwordreq:no /logonpasswordchg:no  

-- Create group streamkap:

net localgroup streamkap-group /comment:"Streamkap Group" /add  

-- In Windows command prompt, switch to the SSH server directory.

cd C:\\ProgramData\\ssh\\ && start notepad .\\sshd_config  

-- Allow password authentication for the Streamkap user.

PasswordAuthentication yes  

-- Allow the Streamkap user to connect to the SSH server. Add the following line to the sshd_config file.

AllowUsers streamkap

-- If your Windows build is 1809 or later, comment out the following lines in the sshd_config file:
# Match Group administrators
# AuthorizedKeysFile **PROGRAMDATA**/ssh/administrators_authorized_keys

Save the sshd_config file.

-- Restart the agent and the sshd service. If the following command fails, you can restart from the Task Manager (Alt + Ctrl + Delete).

Restart-Service ssh-agent; Restart-Service sshd
-- Go into the SSH server using Windows VM.
ssh streamkap@<DNS Name>

  -- Create an .ssh folder in your home directory.
mkdir .ssh

- Add an authorized_keys file if it does not exist
-- If your client is Windows PowerShell:

type nul > authorized_keys  
echo <streamkap-public-key> >> authorized_keys  
icacls C:\\Users\\streamkap\.ssh\\authorized_keys /inheritance:r  

-- If your client is Linux:

touch authorized_keys  
chmod 600 authorized_keys  
echo <streamkap-public-key> >> authorized_keys

If you're running PowerShell in elevated mode, your setup is complete.

If you're not running PowerShell in elevated mode, follow the instructions below.

-- Allow public key authentication
PubkeyAuthentication yes

-- Remove password authentication.
PasswordAuthentication no  
PermitEmptyPasswords no

Save the sshd_config file.

Verify that inheritance has been disabled and remove Administrator.

  • Right click on the authorized_keys file
  • Select Properties
  • Select the Security tab
  • Select Advanced
  • Verify that the bottom left reads Enable Inheritance, which means that inheritance is disabled
  • Remove Administrator from the file security permissions.

Restart the agent and the sshd service.

Restart-Service ssh-agent; Restart-Service sshd