簡體   English   中英

將ssh隧道公開到遠程mysql服務器到其他容器?

[英]Expose ssh tunnel to remote mysql server to other container?

我想將Docker用於本地Web開發,並遵循不同的教程。 我們只能通過ssh隧道訪問mysql服務器。 我想將這部分放入一個特殊的容器中,僅負責建立通往mysql服務器的ssh隧道,然后其他容器可以連接到該容器,就好像它是本地mysql服務器一樣。 我認為這比每個通過ssh自己連接的容器更有意義。 還是一個更好的主意?

我遇到了這個Docker鏡像: https//hub.docker.com/r/dogstudio/remote-ssh,但是無法讓它為我工作,所以我自己嘗試了一下。

到目前為止,我設法創建了一個Docker容器,並在其bash外殼中將其稱為ssh user@example.com -4 -L 33306:127.0.0.1:3306 -N ,之后便可以通過mysql -h 127.0.0.1 -P 33306 -u user -p連接到遠程mysql服務器mysql -h 127.0.0.1 -P 33306 -u user -p

然后,我進入另一個Docker容器( php )的bash並嘗試調用mysql -h ssh_mysql -P 33306 -u user -p 不幸的是,我總是收到錯誤ERROR 2003 (HY000): Can't connect to MySQL server on 'ssh_mysql' (111 "Connection refused")

我嘗試了很多,例如在這里進行了解釋: https : //superuser.com/questions/588591/how-to-make-ssh-tunnel-open-to-public,但可能我做錯了什么或誤解了什么。

我的docker-compose.yml:

version: "2.1"

services:
    nginx:
        build: ./nginx/
        ports:
            - 80:80
        links:
            - php
        volumes:
            - "${PROJECT_ROOT}:/var/www/html:ro"
        networks:
            - server
        depends_on:
            - php

    php:
        build: ./php/
        expose:
            - 9000
        links:
            - ssh_mysql
        volumes:
            - "${PROJECT_ROOT}:/var/www/html"
            - "${SSH_FOLDER}:/root/.ssh"
        networks:
            - database
            - server
        depends_on:
            - ssh_mysql

    ssh_mysql:
        build: ./mysql/
        expose:
            - 33306
        networks:
            - database
        volumes:
            - "${SSH_FOLDER}/id_rsa:/root/.ssh"

volumes:
    data:

networks:
    database:
    server:

因此,您的問題是將SSH隧道綁定到127.0.0.1,因此將localhost和localhost僅用於具有SSH隧道的容器,因此您可以從該容器內部訪問隧道,而不能從其他容器訪問隧道。

要解決此問題,您應該執行本文中所述的操作: 我可以在Docker容器內獲取IP地址嗎?

所以像

ssh user@example.com -4 -L 33306:$(awk 'END{print $1}' /etc/hosts):3306 -N

應該做的工作。

似乎用以下方式打開ssh-tunnel

ssh user@host -4 -L 3307:0.0.0.0:3306 -N -g

(特別是-g標志)

有所作為...

然后,我可以通過調用以下命令通過另一個容器的SSH隧道訪問遠程服務器上的MySQL數據庫:

$ mysql -h ssh_mysql -u mysql_user -p -P 3307

暫無
暫無

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

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