Здесь задействованы три машины.
- Локальный хост, где я занимаюсь разработкой. Он же ноутбук.
- Хост Bastion, к которому вы должны сначала подключиться. Он же jump.
- Сервер MySQL, к которому я хочу подключиться. Он же БД.
Мой открытый ключ ssh находится в /home/myusername/.ssh/authorized_keys при переходе.
В моем ~/.ssh/config есть следующее:
Host jump
HostName jump.domain.com
User myusername
IdentityFile ~/.ssh/myprivatekey
Я могу ssh jump
и могу нормально прыгать.
Какую команду ssh мне нужно запустить в терминале на ноутбуке, чтобы иметь возможность подключиться с ноутбука к базе данных через
mysql -h 127.0.0.1 -P 3308
Мне нужен туннель SSH и переадресация портов, но я еще не разобрался с синтаксисом. Я хочу использовать 3308 для производственной БД и 3307 для промежуточной БД, и я запускаю локальную БД MySQL на 3306, поэтому переадресация портов на нестандартные порты MySQL.
решение1
Вот что я в итоге использовал:
ssh -f -L3307:staging.mysql-server.com:3306 jump sleep 10000000
ssh -f -L3308:production.mysql-server.com:3306 jump sleep 10000000
который изhttp://csce.uark.edu/~kal/info/private/ssh/ch09_02.htmраздел 9.2.6
Примечание: вопреки заданному мной вопросу, proxyCommand не нужен, нужна только правильная комбинация параметров командной строки ssh.
решение2
Команда — ssh -fL <mysql db port>:<mysql server url>:<mysql db port> <username>@<bastian url> '<remote command>'
.
решение3
Вы можете использовать следующий .ssh/config, предполагая, что вы подключаетесь с машины A к C через машину B
Host B
User username_on_b
Hostname ip_of_b
IdentityFile ~/.ssh/key_for_b
Host C
User username_on_c
Hostname ip_of_c
IdentityFile ~/.ssh/key_for_c
Localforward 3308 ip_of_your_sql_server:3306
Proxyjump B
# or old-fashion
# Proxycommand ssh B nc %h %p
Затем вы просто вводите с A:
ssh C
Тогда из А можно
mysql -P 3308 -H localhost