Локальный phpMyAdmin на сервер через прокси

2021.06.17
Захотелось ходить в БД на удаленном сервере через локальный phpMyAdmin, но на удаленный сервер можно зайти только по ssh через socks5 прокси с авторизацией на прокси сервере по логину и паролю ...

На удаленном linux сервере стоит mysql на дефолтном 3306 порту. На сервер можно зайти по ssh через socks5 прокси с авторизацией по логину и паролю.

На локальной машине развернут простой сервер LAMP и есть phpMyAdmin

В БД на удаленном сервере хочется ходить через удобный графический интерфейс, то есть через локальный phpMyAdmin

На самом деле на удаленном сервере был phpMyAdmin но мне не захотелось ставить прокси в браузер :)

ssh туннель

Для начала вспоминаем как подключаться к удаленному серверу по ssh через прокси с авторизацией.

Теперь делаем проброс портов через ssh.

Соединяемся с удаленным сервером по ssh и прокидыаем удаленный порт на локальный - создаем туннель между портом на удаленном сервере и портом на локальном клиенте. Таким образом наша локальная машина будет работать с портом на удаленном сервере как со своим локальным.

Подробнее можно прочитать здесь, там или тут.

Теперь попытаемся собрать все это в одно:

SOCKS5_PASSWD=proxy_password ssh -L 3307:server_ip:3306 -o "ProxyCommand=connect-proxy -5 -S proxy_user@proxy_ip:proxy_port %h %p" user@server_ip

Эта команда похожа на ту что была в предыдущей статье, но кое что добавилось:

-L 3307:server_ip:3306 - прокинуть порт 3306 с сервера server_ip на нашу локальную машину на порт 3307.

Настройка phpMyAdmin

Теперь настроим phpMyAdmin - добавим настройки в конфигурационный файл config.inc.php (после последней строки где идет настройка последнего сервера $cfg['Servers'][$i]):

$i++;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = '127.0.0.1:3307';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;

Новый сервер в списке серверов

Перезагружаем страницу с phpMyAdmin и наблюдаем что в списке серверов есть наш прокинутый порт, выбираем его и авторизируемся (не забываем прокинуть порт командой выше).

В телеграм канале DevOps от первого лица можно оставить комментарий или почитать интересные истории из практики DevOps