Допустим, у меня есть хост svn в частной сети, который мы будем называть my_work_svn
. Я не могу получить к нему доступ извне, но я могу получить к нему доступ с машины, которую мы назовем my_work_ssh
(и предположим, что я работаю с компьютера под названием my_home
).
Теперь, если я хочу проверить репозиторий, я могу сделать:
ssh my_work_ssh
svn co my_work_svn/master my_checked_out_repo
# CTRL+D to quit ssh session from my_work_ssh
scp my_work_ssh:my_checked_out_repo my_local_repo
но это кажется длинным и запутанным, как мне это сделать? это одной командой?
Это можно упростить, используя ssh-туннелирование (и / или ProxyCommands)
. Он находится в .ssh / config
. Если у вас нет окон без понятия.
определите свой бастионный хозяин
Хост my_work_ssh
Имя хоста some.hostname.com
Имя пользователя
IdentityFile ~ / .ssh / id_rsa_work_ssh
Определите свой svn
Хост my_work_svn
Имя хоста svn.internal.domain
IdentityFile ~ / .ssh / root / id_rsa_work_ssh
ProxyCommand ssh my_work_ssh exec nc% h% p 2> / dev / null
my_work_ssh
и my_work_svn
и скопируйте записи known_hosts на свой рабочий стол. ssh my_work_svn
со своего настольного компьютера, и произойдет следующее:
my_work_svn
Конечным эффектом является то, что вы используете промежуточный хост прыгать по FW. Это работает как для ssh, так и для scp (а svn + ssh - это просто команды ssh и svn внутри него).
Обратите внимание:
my_work_ssh
компьютере