Skip to content

Advanced Setup

Access your development machines from anywhere using secure networking solutions. This guide covers recommended tools and setup procedures for reliable remote connections.

Devices on different networks cannot communicate directly due to:

  • Network Address Translation (NAT)
  • Firewall restrictions
  • Dynamic IP addresses
  • Security policies

Modern networking tools solve these challenges by creating secure tunnels between devices.

Creates a secure mesh network between your devices with zero configuration.

Key features:

  • Automatic NAT traversal
  • End-to-end encryption
  • Stable device names
  • Works behind firewalls

Best for: Personal devices, development teams

Setup process:

  1. Install Tailscale on all devices
  2. Authenticate with the same account
  3. Devices automatically discover each other
  4. Use device names in Kisuke (e.g., john-macbook)

Get Tailscale →

Simple VPN service that secures your connection without complex configuration.

Key features:

  • One-click activation
  • Automatic encryption
  • Fast connection speeds
  • Minimal battery impact

Best for: Public networks, quick setup

Get Cloudflare Warp →

For enterprise environments:

  1. Connect to company VPN
  2. Use internal hostnames/IPs
  3. Follow IT security policies
Terminal window
# Enable via System Settings
System Settings General Sharing Remote Login
# Or via terminal
sudo systemsetup -setremotelogin on
Terminal window
# Ubuntu/Debian
sudo apt update
sudo apt install openssh-server
sudo systemctl enable --now ssh
# Fedora/RHEL
sudo dnf install openssh-server
sudo systemctl enable --now sshd
# Check status
sudo systemctl status ssh
  1. Settings → Apps → Optional Features
  2. Add Feature → OpenSSH Server
  3. Services → OpenSSH SSH Server → Start
  4. Set startup type to Automatic

Local network:

Terminal window
# macOS/Linux
ifconfig | grep inet
ip addr show
# Windows
ipconfig

Public IP:

Terminal window
curl ifconfig.me
curl icanhazip.com

Ensure SSH port (22) is accessible:

macOS:

  • System Settings → Security & Privacy → Firewall
  • Allow incoming connections for Remote Login

Linux:

Terminal window
# UFW (Ubuntu)
sudo ufw allow ssh
sudo ufw enable
# firewalld (Fedora)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

Windows:

  • Windows Defender Firewall → Allow an app
  • Check “OpenSSH Server”

When devices share a network:

  1. Find space IP address
  2. Add space in Kisuke
  3. Use local IP (e.g., 192.168.1.100)

After Tailscale setup:

  1. Check device name in Tailscale admin
  2. Use as hostname in Kisuke
  3. Connection works from anywhere

For direct internet access:

  1. Configure router port forwarding
  2. Forward external port to internal IP:22
  3. Use public IP in Kisuke
  4. Consider security implications
  • Use strong passwords (15+ characters)
  • Enable two-factor where available
  • Disable root login via SSH
  • Change passwords regularly
  • Always use encrypted connections
  • Verify host fingerprints on first connection
  • Keep software updated on all devices
  • Monitor access logs regularly

Recommended sshd_config settings:

Terminal window
PermitRootLogin no
PasswordAuthentication yes
MaxAuthTries 3
Protocol 2
AllowUsers yourusername

Connection refused

  • Verify SSH service is running
  • Check firewall allows port 22
  • Confirm correct IP/hostname
  • Test with: nc -zv hostname 22

Network unreachable

  • Check internet connectivity
  • Verify VPN/Tailscale status
  • Test with: ping hostname
  • Check routing: traceroute hostname

Authentication failed

  • Verify username spelling
  • Check password for typos
  • Ensure caps lock is off
  • Review auth logs on server

Timeout errors

  • Check network latency
  • Adjust SSH timeout settings
  • Enable keepalive packets
  • Consider using mosh for unstable connections
Terminal window
# Test SSH connection
ssh -vvv user@host
# Check SSH service
sudo systemctl status ssh
# View SSH logs
sudo journalctl -u ssh
# Test port accessibility
telnet hostname 22

Connect through intermediate space:

~/.ssh/config
Host target
ProxyJump jumphost
HostName internal.server
User username

Reuse connections for speed:

~/.ssh/config
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h:%p
ControlPersist 600