Это то, что сработало для меня
ВМ и VPN
Если у вас есть виртуальная машина, сначала подключитесь к ней по ssh.
Если у вас возникают проблемы с DNS, используйте DNS-сервер Google: sudo nano /etc/resolv.conf
измените 127…
на 8.8.8.8
.
мой туннель требует, чтобы я подключался через vpn, я использовал openvpn, вы можете установить его следующим образом:
sudo yum -y install openvpn
подключиться к vpn скачать myconfig.ovpn от провайдера vpn
sudo openvpn --config myconfig.ovpn
Ключ SSH
загрузите свой ключ на виртуальную машину, исправьте разрешения
sudo chmod 600 ~/.ssh/my-private-ssh-key
Переадресация порта
ssh -f -N -i ~/.ssh/my-private-ssh-key [email protected] -L 3307:yourmysqldbdomain.com:3306
-f
запустит его в фоновом режиме
-L
перенаправит 127.0.0.1:3307
, чтобы указать на yourmysqldbdomain.com:3306
обратите внимание, что использование localhost
в моем случае не сработало, пришлось использовать 127.0.0.1
для текущего локального IP-адреса виртуальной машины.
вы можете удалить условия -f
и -L
и вместо этого добавить -v
для отладки, например так
ssh -v -i ~/.ssh/my-private-ssh-key [email protected]
Подключиться к mysql
mysql -u yourdbusername -h 127.0.0.1 -P 3307 -p
Подключиться к PHP PDO
$db_server = '127.0.0.1';
$db_port = '3307';
$db_name = 'yourdbname';
$db_user = 'yourdbusername';
$db_pass = 'yourdbpassword';
$dsn = 'mysql:host='.$db_server.';dbname='.$db_name.';port='.$db_port;
$driver_options = [
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'",
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_TIMEOUT => 5, // timeout in seconds
];
$pdo = new PDO($dsn, $db_user, $db_pass, $driver_options);
Удалить переадресацию портов
Как только вы закончите, вы можете убить процесс, найдя такой идентификатор:
ps aux | grep ssh
sudo kill 123123 // replace 123123 with the id of the process
person
Timo Huovinen
schedule
11.01.2021