簡體   English   中英

來自 Docker 容器的 SSH 隧道

[英]SSH Tunnel from Docker Container

我需要通過 SSH 隧道連接到我的大學網絡,才能通過 MySQL 數據庫開展項目(而不是實際在學校和使用網絡)。

我可以使用以下說明(或通過 VSCode 遠程資源管理器)訪問服務器:

ssh -L 4444:abc.university.ca:443 login.university.ca

ssh -p 4444 'your_username'@localhost

並提示他們輸入我的密碼。

我還可以從 MySQL Workbench SSH Tunnel 連接到數據庫。

但是我想在我的機器上本地開發。

我已經使用 Apache PHP 服務器設置了一個 Docker 容器,因此我不必通過終端手動將我的文件復制到服務器。

文件

FROM php:7.2-apache
# Use the default production configuration
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
#get mysqli
RUN docker-php-ext-install mysqli
COPY src/ /var/www/html/

docker-compose.yml

version: "3.2"
services:
    web:
        build: php-apache
        container_name: php-apache-server
        ports:
          - "8080:80"

然后我嘗試通過 connection.php 與數據庫連接

<?php 
/* DB Credentials */
$DB_SERVER = 'xxxxxxxxxxxx';
$DB_USERNAME = 'xxxxxxxxxx';
$DB_PASSWORD = 'xxxxxxxx';
$DB_NAME = 'xxxxxxxxx';
$PORT = xxxx;

/* Attempt to connect to MySQL database */
$link = mysqli_connect($DB_SERVER, $DB_USERNAME, $DB_PASSWORD, $DB_NAME);

// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
?>

我的問題是當我通過終端建立 SSH 隧道時,我在 Docker 容器中的應用程序無法連接到 MySQL 數據庫。 我正進入(狀態:

PHP Warning:  mysqli_connect(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /var/www/html/connection.php on line 11

我的問題是,如何從我的容器內打開 SSH 隧道,以便我的本地 apache-php 服務器可以連接到我學校網絡上的數據庫?

好吧,我認為您可能更喜歡使用VPN,而不是“SSH 隧道”,但無論如何,網絡連接都將是環境的:也就是說,“特定於主機環境,而不是 Docker錯覺。”

如果隧道公開了一個特定的已知“主機 IP 地址”,那么 Docker 橋接網絡將能夠訪問它。

為了幫助多跳和轉發,在你的 .ssh/config

host uni
   hostname login.university.ca
   user  some_user

host abc
   hostname abc.university.ca
   port 443
   ProxyJump uni
   LocalForward localhost:3306 /var/lib/mysql/mysql.sock

然后$DB_SERVER=127.0.0.1localhost表示本地 unix socket 到 mysql)從你的 docker 容器到端口 3306 以利用本地轉發到遠程服務器。

.ssh/config 的其他配置提示以減少身份驗證:

ControlMaster auto
ControlPath ~/.ssh/control-%r@%h:%p
ControlPersist 600
ServerAliveInterval 39

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM