Skip to content

Latest commit

 

History

History
228 lines (166 loc) · 7.96 KB

File metadata and controls

228 lines (166 loc) · 7.96 KB

English Portuguese

iroh-ssh

Crates.io Documentation License AUR

Usa SSH a cualquier maquina sin usar IP, tras una NAT/firewall y sin requerir redireccionamiento de puertos o configurar una VPN.

# En el servidor
> iroh-ssh server --persist

    Connect to this this machine:

    iroh-ssh my-user@bb8e1a5661a6dfa9ae2dd978922f30f524f6fd8c99b3de021c53f292aae74330


# En el cliente
> iroh-ssh user@bb8e1a5661a6dfa9ae2dd978922f30f524f6fd8c99b3de021c53f292aae74330
# o con certificados ssh
> iroh-ssh -i ~/.ssh/id_rsa_my_cert my-user@bb8e1a5661a6dfa9ae2dd978922f30f524f6fd8c99b3de021c53f292aae74330

Y eso es todo lo que se necesita. (requiere tener ssh/(un servidor ssh) instalado)


Instalación

cargo install iroh-ssh

Arch Linux (AUR)

yay -S iroh-ssh-git

Descarga y configura automáticamente el binario para tu sistema operativo desde GitHub Releases:

Linux

# Linux
wget https://github.com/rustonbsd/iroh-ssh/releases/download/0.2.10/iroh-ssh.linux
chmod +x iroh-ssh.linux
sudo mv iroh-ssh.linux /usr/local/bin/iroh-ssh

macOS

# macOS arm
curl -LJO https://github.com/rustonbsd/iroh-ssh/releases/download/0.2.10/iroh-ssh.macos
chmod +x iroh-ssh.macos
sudo mv iroh-ssh.macos /usr/local/bin/iroh-ssh

Windows

# Windows x86 64bit
curl -L -o iroh-ssh.exe https://github.com/rustonbsd/iroh-ssh/releases/download/0.2.10/iroh-ssh.exe
mkdir %LOCALAPPDATA%\iroh-ssh
move iroh-ssh.exe %LOCALAPPDATA%\iroh-ssh\
setx PATH "%PATH%;%LOCALAPPDATA%\iroh-ssh"

Verifica que la instalación fue exitosa

# reiniciar primero su terminal
> iroh-ssh --help

Conexion del cliente

# Instalar para su distribución primero (ver arriba)
# Conectar desde cualquier lugar
> iroh-ssh my-user@38b7dc10df96005255c3beaeaeef6cfebd88344aa8c85e1dbfc1ad5e50f372ac

Funciona a través de cualquier firewall, NAT o red privada. Sin configuración necesaria.

Conectando al servidor remoto


Configurando el servidor

# Instalar para su distribución primero (ver arriba)
# (usar con tmux o instalar como servicio en linux)

> iroh-ssh server --persist

    Connect to this this machine:

    iroh-ssh my-user@bb8e1a5661a6dfa9ae2dd978922f30f524f6fd8c99b3de021c53f292aae74330

    (using persistent keys in /home/my-user/.ssh/irohssh_ed25519)

    Server listening for iroh connections...
    client -> iroh-ssh -> direct connect -> iroh-ssh -> local ssh :22
    Waiting for incoming connections...
    Press Ctrl+C to exit

o para llaves efimeras

# Instalar para su distribución primero (ver arriba)
# (usar con tmux o instalar como servicio en linux)

> iroh-ssh server

    Connect to this this machine:

    iroh-ssh my-user@bb8e1a5661a6dfa9ae2dd978922f30f524f6fd8c99b3de021c53f292aae74330

    warning: (using ephemeral keys, run 'iroh-ssh server --persist' to create persistent keys)

    client -> iroh-ssh -> direct connect -> iroh-ssh -> local ssh :22
    Waiting for incoming connections...
    Press Ctrl+C to exit
    Server listening for iroh connections...

Mostrar su ID de nodo y compártalo para permitir la conexión

Iniciando el servidor/Instalando el servicio

Información de la conexión

// nota: funciona solo con llaves persistentes
> iroh-ssh info

    Your iroh-ssh endpoint id: 38b7dc10df96005255c3beaeaeef6cfebd88344aa8c85e1dbfc1ad5e50f372ac
    iroh-ssh version 0.2.10
    https://github.com/rustonbsd/iroh-ssh

    Your server iroh-ssh endpoint id:
      iroh-ssh my-user@38b7dc10df96005255c3beaeaeef6cfebd88344aa8c85e1dbfc1ad5e50f372ac

    Your service iroh-ssh endpoint id:
      iroh-ssh my-user@4fjeeiui4jdm96005255c3begj389xk3aeaeef6cfebd88344aa8c85e1dbfc1ad

Como funciona

┌─────────────┐          ┌─────────────────┐          ┌─────────────┐
│     SSH     │─────────▶│  Tunel QUIC     │─────────▶│  iroh-ssh   │
│   Cliente   │          │  (Red P2P)      │          │  servidor   │
└─────────────┘          └─────────────────┘          └─────────────┘
      │                           ▲                            │
      │                           │                            │
      ▼                           │                            ▼
┌─────────────┐          ┌─────────────┐          ┌──────────────────┐
│ ProxyCommand│          │  iroh-ssh   │          │ Servidor SSH     │
│ iroh-ssh    │──────────│    proxy    │          │ localhost:22     │
│ proxy %h    │          │             │          └──────────────────┘
└─────────────┘          └─────────────┘
  1. Cliente SSH: Invoca iroh-ssh proxy a través del ProxyCommand de SSH
  2. Proxy: Establece una conexión QUIC a través de la red P2P de Iroh (traspaso NAT automatico)
  3. Servidor: Acepta la conexión y proxifica al daemon SSH local (puerto 22)
  4. Autenticación: Seguridad estándar SSH end-to-end sobre túnel QUIC cifrado

Escenarios de uso

  • VNC/RDP sobre SSH: Acceder de forma segura a escritorios gráficos de forma remota
  • Extensión SSH de VisualStudio: Desarrollar en máquinas remotas sin problemas
  • Servidores remotos: Acceder a instancias en la nube sin exponer puertos SSH
  • Redes domesticas: Conectar a dispositivos tras un router/firewall
  • Redes corporativas: Saltarse politicas de redes restrictivas
  • Dispositivos IoT: SSH a dispositivos embebidos en redes privadas
  • Desarrollo: Acceder a servidores de pruebas y máquinas de compilacion

Comandos

# Obtiene su ID de Nodo e información
> iroh-ssh info

# Modos de servidor
> iroh-ssh server --persist          # Modo interactivo, por ejemplo usar tmux (en el puerto 22 default SSH)
> iroh-ssh server --ssh-port 2222    # Usando un puerto SSH personalizado (con llaves efimeras)

# Modo servicio
> iroh-ssh service install                   # Daemon de fondo (solo en Windows y Linux, puerto 22 default)
> iroh-ssh service install --ssh-port 2222   # Daemon de fondo con puerto SSH personalizado
> iroh-ssh service uninstall                 # Desinstalar servicio

# Conexión de cliente
> iroh-ssh user@<ENDPOINT_ID>                           # Conectarse a un servidor remoto
> iroh-ssh connect user@<ENDPOINT_ID>                   # Comando de conexión explicito, funciona con todos los parametros y opciones ssh estándar

Modelo de seguridad

  • Acceso por ID de Nodo: Cualquier persona con el ID de Nodo puede acceder a su puerto SSH
  • Autenticación SSH: Se admite la autenticación de llave y certificados SSH.
  • Llaves persistentes: Utiliza un par de llave dedicado en .ssh/iroh_ssh_ed25519
  • Cifrado QUIC: Cifrado en la capa de transporte entre puntos finales

Avances

  • Autenticación con contraseña
  • Llaves SSH persistentes
  • Modo servicio en Linux
  • Gifs con ejemplos
  • Adicionar la opción -p para persistencia
  • Modo servicio en Windows
  • (además de casi) todos los comandos ssh soportados
  • Modo servicio en MacOS

Licencia

Licenciado tanto la Licencia Apache 2.0 o la Licencia MIT a su elección.