SSH тунелно решение
Настройте SSH тунел към вашия сървър на база данни MySQL (чрез Jumpbox прокси за сигурност).
(A) GUI инструменти
В зависимост от вашите изисквания, можете да използвате GUI MySQL клиент с вградена поддръжка за SSH тунелиране, като например Visual Studio Code Препращане на порт / създаване на SSH тунел , TablePlus или използвайте PuTTY за да настроите локално пренасочване на порт.
В macOS харесвам Secure Pipes или TablePlus .
(B) Команден ред
Стъпка 1.
ssh -fNg -L 3307:10.3.1.55:3306 [email protected]
Ключът тук е '-L' превключвател, който казва на ssh, че изискваме локален пренасочване на порт.
Избрах да използвам порт 3307 по-горе. Целият трафик на моя локален машина, насочена към този порт, вече ще бъде „пренасочена към порта“ чрез моя ssh клиент към ssh сървъра работи на хоста на адрес ssh-jumpbox.com
.
Jumpbox ssh прокси сървърът ще декриптира трафика и ще установи мрежова връзка към вашия MySQL сървър на база данни от ваше име, 10.3.1.55:3306
, в такъв случай. Сървърът на базата данни MySQL вижда връзката, идваща от вътрешния мрежов адрес на вашия Jumpbox.
Синтаксис за пренасочване на локален порт
Синтаксисът е малко сложен, но може да се види като:
<local_workstation_port>:<database_server_addr_remote_end_of_tunnel>:<database_server_port_remote_end> [email protected]_proxy_host.com
Ако се интересувате от другите превключватели, те са:
-f (отидете на заден план)
-N (не изпълнявайте отдалечена команда)
-g (позволете на отдалечените хостове да се свързват с локални пренасочени портове)
Удостоверяване с частен ключ, добавете (-i) превключвател към по-горе:
-i /пътя/до/частен ключ
Стъпка 2.
Кажете на вашия локален MySQL клиент да се свърже през вашия SSH тунел през локалния порт 3307 на вашата машина (-h 127.0.0.1), който сега препраща целия трафик, изпратен до него през SSH тунела, който сте установили в стъпка 1.
mysql -h 127.0.0.1 -P 3307 -u dbuser -p passphrase
Обменът на данни между клиент и сървър вече се изпраща през криптираната SSH връзка и е защитен.
Бележка за сигурност
Не тунелирайте директно към сървъра на базата данни. Наличието на сървър на база данни, достъпен директно от интернет, е огромно задължение за сигурността. Направете целевия адрес на тунела интернет адреса на вашия Jumpbox/Bastion Host (вижте примера в стъпка 1), а вашата база данни е насочена към вътрешния IP адрес на вашия сървър на база данни в отдалечената мрежа. SSH ще направи останалото.
Стъпка 3.
Сега свържете вашето PHP приложение с:
<?php
$smysql = mysql_connect( "127.0.0.1:3307", "dbuser", "passphrase" );
mysql_select_db( "db", $smysql );
?>
Кредит на Крис Снайдър страхотна статия подробно тунелиране на ssh команден ред за MySQL свързаност.