Автоматизируйте переадресацию портов SSH с помощью DNS

Автоматизируйте переадресацию портов SSH с помощью DNS

У меня есть несколько хостов ssh (десяток), для простоты host1, host2и т. д.

Мне часто нужно перенаправить порт, например

ssh -L 8888:localhost:8888 host1
ssh -L 8889:localhost:8888 host2
ssh -L 8890:localhost:80   host2

Это раздражает, так как 1) мне нужно помнить о сопоставлении локальных портов с хостами и 2) мне нужно делать это вручную.

Я хотел бы реализовать некую систему, которая прослушивала бы определенные хосты (локально, на моей машине), например, host1.8888.ssh.localи автоматически открывала туннель к этому адресу.

решение1

Вы можете настроить все это внутри файла конфигурации ssh, который обычно находится по адресу:$HOME/.ssh/config

например:

Host abc
    Hostname 1.2.3.4
    Port 345
    IdentityFile /path/to/id_rsa
    LocalForward 8888 localhost:8888
    User root
Host def
    Hostname 2.3.4.5
    User root
    LocalForward 8889 localhost:8889

Таким образом, вам просто нужно ввести текст, ssh abcи все ваши настройки, которые вы укажете внутри, будут применены. Доступные параметры находятся внутристраница руководства.

решение2

Я разработалsshtunnelэто служба, которая будет создавать туннели и поддерживать их работу.

server "srv_us"
  HostName="srv.us"
  User="root"
  IdentityFile="/root/.ssh/id_ed25519"

tunnelR "srv_us_http"
  servername="srv_us"
  remoteaddress="1"
  remoteport=80
  localaddress="127.0.0.1"
  localport=8080

Если у вас есть маршрутизатор OpenWrt, вы можете использовать похожийsshtunnelсервис. Недавно был добавлен графический интерфейс для его настройки luci-app-sshtunnel.

решение3

Записка из будущего, которая не имеет ничего общего с заданным вопросом, но решает основную проблему.

Если вы делаете что-то в vs code на сервере, после запуска любого процесса (например, jupyter, tensorboard, dashboards, webservers), vs code перенаправляет эти порты на локальную машину, поэтому нет необходимости что-либо запоминать, порты перенаправляются только с хоста, с которым вы в данный момент работаете, и любое количество портов, и только используемые порты. Какое удобство!

Связанный контент