这对我有用
虚拟机和VPN
如果您有虚拟机,则首先通过 ssh 连接到该虚拟机。
如果您遇到 DNS 问题,请使用 google dns:sudo nano /etc/resolv.conf
Change 127…
to 8.8.8.8
我的隧道需要我通过VPN连接,我使用openvpn,你可以像这样安装它:
sudo yum -y install openvpn
连接到VPN
从 VPN 提供商下载 myconfig.ovpn
sudo openvpn --config myconfig.ovpn
SSH Key
将您的密钥上传到虚拟机
修复权限
sudo chmod 600 ~/.ssh/my-private-ssh-key
端口转发
ssh -f -N -i ~/.ssh/my-private-ssh-key your[email protected] /cdn-cgi/l/email-protection -L 3307:yourmysqldbdomain.com:3306
-f
将在后台运行它
-L
将转发127.0.0.1:3307
指向yourmysqldbdomain.com:3306
请注意,使用localhost
在我的情况下不起作用,必须使用127.0.0.1
为当前虚拟机本地ip。
你可以删除-f
and -L
条件并添加-v
进行一些调试,就像这样
ssh -v -i ~/.ssh/my-private-ssh-key [email protected] /cdn-cgi/l/email-protection
与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);
删除端口转发
完成后,您可以通过查找 id 来终止该进程,如下所示:
ps aux | grep ssh
sudo kill 123123 // replace 123123 with the id of the process