У меня есть устройство, на котором установлен репозиторий apt-get. Обычно я использую следующую команду, чтобы сделать его таким, чтобы я мог подключаться apt-get
к нему с удаленного сервера.
ssh user@IPofRemoteServer -R8880:127.0.0.1:8880
Однако для этого необходимо, чтобы локальное репозиторное устройство имело подключение к удаленному серверу.
Мне нужно сделать следующее:
local repo ---> jumpbox ---> remote server
Поэтому я могу apt-get update
успешно запустить его из локального репозитория.
Я пробовал сделать следующее, но безуспешно:
ssh -A -t user@jumpbox -R8880:127.0.0.1:80 ssh -A -t user@remoteServer -R8880:127.0.0.1:80
Однако это не работает, и после исследования я думаю, что это связано с тем, что порт 8880 просто переходит на порт 80 на Jumpbox, а не фактически транслируется для пересылки в локальный репозиторий.
Я пробовал разные варианты, но безуспешно, и мне нужно сделать это, чтобы обновить удаленный сервер.
решение1
Разве не достаточно:
ssh -A -t user@jumpbox -R8880:remoteServer:80
Я правильно понимаю, что порт удаленного сервера доступен с хоста Jump?
РЕДАКТИРОВАТЬ: Насколько я понимаю, у вас есть некий локальный репозиторий, который вы хотите отобразить на удаленном хосте и использовать его.
Ну, обычно я использую это так: В ~/.ssh/config:
Host TargetServer
Hostname remoteServer
ProxyJump jumpbox
И теперь вы можете просто подключиться по SSH к своему удаленному серверу:
ssh TargetServer -R8880:localhost:80
Теперь вы вошли на целевой сервер. Вы можете проверить, открыт ли туннель:
netstat -lapn | grep 8880
И, конечно же, вы сможете сделать там yum-обновление.
ПРАВКА2: Если вы хотите использовать его в командной строке без файла конфигурации, используйте-Джвыключатель:
-J [user@] host [:port]
Connect to the target host by first making a ssh connection to the jump host and then establishing a
TCP forwarding to the ultimate destination from there. Multiple jump hops may be specified sepa‐
rated by comma characters. This is a shortcut to specify a ProxyJump configuration directive.
решение2
Я не уверен, что правильно понял ваш вопрос, потому что вы говорите, что хотите «apt-get (...) с удаленного сервера», а также «запустить apt-get update (...) из локального репозитория».
Я предполагаю, что локально размещен репозиторий, а удаленный пользователь хочет подключиться к нему.
Либо две команды вроде этой:
local$ ssh -R 54321:localhost:8880 user@jumpbox
jumpbox$ ssh -R 8880:localhost:54321 user@remote
remote$ apt-get ...
Либо просто:
local$ ssh -tAR 54321:localhost:8880 user@jumpbox ssh -R 8880:localhost:54321 user@remote
remote$ apt-get ...
Для последнего вам понадобится ssh-агент локально или вам нужно будет подключиться к нему ssh -A
с машины, на которой установлен агент.
Конечно, ваш /etc/apt/sources.list
файл на удаленном компьютере должен иметь ссылку на localhost:8880.
решение3
Я нашел эту команду полезной:
ssh -L LOCAL_PORT:WEBSERVER:REMOTE_PORT -J jumpuser@JUMPHOST remoteuser@REMOTEHOST
Ссылка:https://pillpall.github.io/linux/2018/02/06/sshscp_jumphost.html