10 Nov 2017
Use .onion Address to Connect to SSH Server over Tor Hidden Service
Tor Hidden Services can be used to connect to services behind firewalls or NAT without port forwardings.
Server
Tor Setup
- Add
torpackage sources:cat > /etc/apt/sources.list.d/tor.list << EOF deb http://deb.torproject.org/torproject.org $(lsb_release -cs) main deb-src http://deb.torproject.org/torproject.org $(lsb_release -cs) main EOF - Add signing key:
gpg --keyserver keys.gnupg.net --recv A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add - - Install
torpackage:apt-get install -y tor deb.torproject.org-keyring - Enable & start
torservice:systemctl enable tor.service systemctl start tor.service
Tor Hidden Service Configuration
- Add to
/etc/tor/torrc:HiddenServiceDir /var/lib/tor/ssh/ HiddenServicePort 22 127.0.0.1:22 - Restart
torservice:systemctl restart tor.service
After restarting tor, there are two new files in /var/lib/tor/hostname:
hostname(contains the hidden service hostname)private_key(back this one up!)
The SSH service is now available as Tor Hidden Service.
Client
- Append to
~/.ssh/config:Host *.onion ProxyCommand nc -x 127.0.0.1:9050 -X5 %h %p - Run
tor - Connect to SSH Hidden Service over Tor:
ssh <$SSH_USER>@<$ONION_ADDRESS>
(Optional)
If the SSH service should only be available as Tor Hidden Service, you can limit it to listen only on the servers loopback address (127.0.0.1).
For this edit /etc/ssh/sshd_config on the server and set ListenAddress 127.0.0.1. Now restart the sshd service (systemctl restart ssh) to enable the configuration.