У меня есть докер-контейнер, который связывает порт 2222: 22. Можно подключиться с помощью ssh -T sub.example.com -p 2222
.
Я ищу способ получить доступ к контейнеру ssh без указания номера порта. Я думал, что это можно сделать с помощью записи DNS.
Я установил запись DNS SRV _ssh._tcp.sub 5 10022 sub.example.com
для своего домена в интерфейсе администратора моего провайдера, это не работает.
Есть способ сделать это?
Вам нужны клиенты, которые на самом деле также используют записи SRV, и, насколько мне известно, ни один из (общих) клиентов SSH не поддерживает ...
Очень немногие общие приложения / протоколы действительно поддерживают SRV записи.
Вместо этого: отредактируйте файл конфигурации ssh-клиентов ~ /.ssh / config
создайте запись для этого хоста, и вам, по крайней мере, больше не придется явно указывать номер порта в командной строке каждый раз, когда вам нужно подключиться:
#~/.ssh/conf
Host sub.example.com
HostName sub.example.com
Port 2222
...
, а затем ssh sub.example.com
Некоторые люди хотели решить ту же проблему, что и вы, и сделали оболочку. Я не тестировал эти инструменты, но, читая их, они действительно ищут и используют информацию о портах. (Они могут даже сделать больше: выполнение ssh для имени, определенного в записи SRV, может закончиться с другим именем хоста, если запись была определена таким образом.) Теперь поддержка других команд (scp, sftp ...) или нескольких хостов там не поддерживается.
Введение
ssh-srv-wrapper ] - это сценарий оболочки bash, который пытается найти SSH SRV. запись для первого хоста и использует то, что найдено, а не то, что было пройдено (если найдена действительная запись).
sshsrv - это простая программа для поиска и подключения к конечной точке SSH через записи DNS SRV.
Я использую wrapsrv вместе с ProxyCommand
и socat
, чтобы использовать записи SRV
для определения конечная точка соединения:
Host *.my.domain
ProxyCommand wrapsrv _ssh._tcp.%h socat STDIO TCP:%%h:%%p
Преимущество в том, что и scp
, и sftp
должны использовать его из конфигурационного файла ssh.
Обратите внимание, что запись SRV
требует ТРИ целые числа: приоритет, вес и порт, а не два, как вы указываете в своем вопросе.