Барам директива за конфигурирање на клиенти за ssh како LocalForward
што работи како параметар -L
CLI , но за -R
параметар
TL; DR детали за целиот проблем
Податоците :
repoServer -> myComputer -> NAT -> stagingServer
Имам локален сервер за складирање git, кој не е изложен на Интернет и сервер за оддалечена сцена на кој треба да го распоредувам моето репо.
За да го сторам тоа, јас влегувам во далечинскиот управувач на серверот со обратна приклучок. ] myComputer :
File: ~ / .ssh / config
Host StagingServer
Hostname staging.acme.com
User username
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_username
ForwardAgent yes
на којшто работам:
ssh StagingServer -R 8022: repository.local: 22
Тековна конфигурација за stagingServer :
Датотека: ~ / .ssh / конфигурација
Host repository
Hostname localhost
User git
Port 8022
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_deployer
на која можам да извршувам :
git клон (скриен) сите работи добро, но ... конечно
Прашањето :
Дали е можно да се наведе во конфигурациската датотека на ssh клиентот (~ / .ssh / конфигурација) да се отвори обратен тунел за да не морам да додавам -R 8022: repository.local: 22
Это очевидно для LocalForward, но вы можете найти конкретное в ssh_config Doc ...
Документация: https://linux.die.net/man/5 / ssh_config (поиск RemoteForward). Это говорит само за себя.
RemoteForward
Указывает, что порт TCP на удаленной машине перенаправляется по защищенному каналу на указанный хост и порт из локальная машина. Первым аргументом должен быть порт [bind_address:] и второй аргумент должен быть host: hostport. Адреса IPv6 могут быть указаны путем заключения адресов в квадратные скобки или с помощью символа альтернативный синтаксис: порт [bind_address /] и хост / порт хоста. Множественный могут быть указаны переадресации, и могут быть сделаны дополнительные пересылки в командной строке. Привилегированные порты могут быть перенаправлены только тогда, когда вход в систему как root на удаленном компьютере.
Host tunnel
HostName database.example.com
IdentityFile ~/.ssh/coolio.example.key
LocalForward 9906 127.0.0.1:3306
User coolio
Директива RemoteForward - это то, что я искал, в предыдущей консультации с документами я нашел LocalForward и DynamicForward, но не увидел RemoteForward.
Документация: https://linux.die.net/man/5/ssh_config .
RemoteForward
Указывает, что порт TCP на удаленном компьютере перенаправлено по защищенному каналу на указанный хост и порт от локальная машина. Первым аргументом должен быть порт [bind_address:] и второй аргумент должен быть host: hostport. Адреса IPv6 могут быть указывается заключением адресов в квадратные скобки или с помощью символа альтернативный синтаксис: порт [bind_address /] и хост / порт хоста. Множественный могут быть указаны пересылки, и могут быть сделаны дополнительные пересылки в командной строке. Привилегированные порты могут быть перенаправлены только тогда, когда вход в систему как root на удаленном компьютере.
Затем конфигурация для myComputer становится следующей:
Файл: ~ / .ssh / config
Host StagingServer
Hostname staging.acme.com
User username
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_username
ForwardAgent yes
RemoteForward 8022 repository.local:22