Вот ситуация:
Я всю работу выполняю на Mac.
Есть определенный сервер Linux.сервер01' который обеспечивает доступ к другому серверу Linux 'сервер02' через псевдотерминал
Итак, чтобы войти по ssh в 'сервер02', я делаю это со своего Mac:
ssh -t server01 'inline server02'
Затем он просит меня ввести пароль для 'сервер01'; Я ввожу его, и это позволяет мне войти в систему 'сервер02'. Теперь я нахожусь на 'сервер02' Терминал.
От 'сервер02«Я могу получить доступ к базе данных MySQL, которая находится на»сервер03' используя следующую команду mysql:
mysql --host=server03 --port=4201 --user=myuser --password=mypass mydb
Ни один 'сервер01' ни 'сервер02' ни у моего Mac нет доступа по SSH к 'сервер03'
Теперь я хочу получить доступ к mysql на 'сервер03' с моего mac напрямую через какой-то переадресацию портов. Так что, если я введу следующую команду на моем терминале mac, она должна подключить меня к базе данных mysql на 'сервер03':
mysql --host=localhost --port=4201 --user=myuser --password=mypass mydb
Есть ли способ это сделать? Любая помощь будет высоко оценена.
решение1
Если вы можете подключиться по ssh к server02 с server01, вы можете попробовать
ssh -t -L server02:4201 server01 'ssh -N -L server03:4201 server02'
это будет цепочка соединений
локальный хост:4201 -> сервер02:4201 -> сервер03:4201
просто подключается локально к порту4201на макинтоше
Лучше использовать аутентификацию по ключу и ssh-agent, чтобы избежать ввода паролей.