Docker容器實(shí)現(xiàn)SSH遠(yuǎn)程直連
在某些特殊需求下,我們想ssh直接遠(yuǎn)程連接docker 容器,下面我們介紹結(jié)合cpolar工具實(shí)現(xiàn)ssh遠(yuǎn)程直接連接docker容器
1. 下載docker鏡像
本文下載一個(gè)tomcat鏡像為例子,輸入命令拉取tomcat鏡像:
docker pull tomcat
我們下載的是tomcat鏡像,tomcat端口容器內(nèi)部默認(rèn)是8080,我們把tomcat容器內(nèi)部端口映射到宿主機(jī)的8088端口上,運(yùn)行鏡像容器,
docker run -it -d -p8088:8080 tomcat /bin/bash
運(yùn)行后查看一下正在運(yùn)行的容器
docker ps -a
可以看到已經(jīng)運(yùn)行了,同時(shí)也看到了容器ID

2. 安裝ssh服務(wù)
進(jìn)入容器
docker exec -it 容器ID /bin/bash
進(jìn)入容器后,我們安裝ssh服務(wù),首先更新包管理器
apt-get update
安裝ssh服務(wù)
apt-get install openssh-server
安裝文件編輯器 vim
apt-get install vim
設(shè)置SSH登錄密碼,第一次是設(shè)置密碼,第二次是確認(rèn)密碼,輸入兩次
passwd
修改配置文件
vim /etc/ssh/sshd_config
需要修改兩個(gè)地方:
第一:把ssh 服務(wù)默認(rèn)的22端口設(shè)置為與容器服務(wù)的端口一致,如我們是tomcat容器,就設(shè)置為8080,因?yàn)槲覀冞\(yùn)行容器的時(shí)候掛載的是內(nèi)部的8080端口映射到宿主機(jī)的8088端口,所以需要和容器內(nèi)部端口保持一致,
第二:將 PermitRootLogin prohibit-password 修改為 PermitRootLogin yes ,開啟使用密碼登錄,設(shè)置完成后保存退出

修改完成后,重啟ssh服務(wù)
service ssh restart
3. 本地局域網(wǎng)測試
上面我們設(shè)置完成了在容器內(nèi)部安裝了ssh服務(wù),現(xiàn)在進(jìn)行局域網(wǎng)測試連接,用戶名默認(rèn)是root,端口號這里需要輸入我們映射到宿主機(jī)的8088端口
ssh -p 8088 root@192.168.10.125
登錄過程中需要輸入密碼,即上面設(shè)置的密碼,成功后,可以看到我們成功進(jìn)入了容器內(nèi)部

4. 安裝cpolar
安裝cpolar我們在宿主機(jī)安裝,不需要進(jìn)入容器內(nèi)部安裝
使用一鍵腳本安裝命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
向系統(tǒng)添加服務(wù)
sudo systemctl enable cpolar
啟動cpolar服務(wù)
sudo systemctl start cpolar
5. 配置公網(wǎng)訪問地址
成功啟動cpolar服務(wù)后,我們在瀏覽器上訪問Linux局域網(wǎng)ip地址+9200端口,登錄cpolar web UI管理界面。
cpolar官網(wǎng)地址: https://www.cpolar.com
登錄成功后,點(diǎn)擊左側(cè)儀表盤的隧道管理——創(chuàng)建隧道:
隧道名稱:可自定義,注意不要與已有的隧道名稱重復(fù)協(xié)議:tcp本地地址:8088域名類型:臨時(shí)隨機(jī)TCP端口地區(qū):選擇China VIP
點(diǎn)擊 創(chuàng)建

然后打開左側(cè)在線隧道列表,查看剛剛創(chuàng)建隧道后生成的tcp連接的公網(wǎng)地址

6. SSH公網(wǎng)遠(yuǎn)程連接測試
使用ssh 命令行連接模式,注意,-p后面的端口是cpolar中生成的公網(wǎng)地址對應(yīng)的端口
ssh -p 端口 root@公網(wǎng)地址
執(zhí)行后,我們可以看到成功進(jìn)入容器,這樣ssh 遠(yuǎn)程直接連接docker容器就設(shè)置好了

7.固定連接公網(wǎng)地址
要注意的是,以上步驟使用的是隨機(jī)臨時(shí)tcp端口地址,所生成的公網(wǎng)地址為隨機(jī)臨時(shí)地址,該公網(wǎng)地址24小時(shí)內(nèi)會隨機(jī)變化。我們接下來為其配置固定的TCP端口地址,該地址不會變化,設(shè)置后將無需每天重復(fù)修改地址。
配置固定tcp端口地址需要將cpolar升級到專業(yè)版套餐或以上。
保留一個(gè)固定tcp地址
登錄cpolar官網(wǎng),點(diǎn)擊左側(cè)的預(yù)留,找到保留的tcp地址,我們來為我的世界保留一個(gè)固定tcp地址:
地區(qū):選擇China vip描述:即備注,可自定義
點(diǎn)擊 保留

地址保留成功后,系統(tǒng)會生成相應(yīng)的固定公網(wǎng)地址,將其復(fù)制下來

打開cpolar web ui管理界面,點(diǎn)擊左側(cè)儀表盤的隧道管理——隧道列表,找到我們上面創(chuàng)建的TCP隧道,點(diǎn)擊右側(cè)的 編輯

修改隧道信息,將保留成功的固定tcp地址配置到隧道中
端口類型:修改為固定tcp端口預(yù)留的tcp地址:填寫官網(wǎng)保留成功的地址,
點(diǎn)擊 更新

隧道更新成功后,點(diǎn)擊左側(cè)儀表盤的狀態(tài)——在線隧道列表,可以看到公網(wǎng)地址已經(jīng)更新成為了固定tcp地址。

8. SSH固定地址連接測試
輸入ssh 連接命令,使用我們上面的公網(wǎng)地址和端口,我們可以看到,連接成功,固定ssh遠(yuǎn)程直接連接docker容器就設(shè)置好了

到此這篇關(guān)于Docker容器實(shí)現(xiàn)SSH遠(yuǎn)程直連的文章就介紹到這了,更多相關(guān)Docker SSH遠(yuǎn)程直連內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker容器設(shè)置本地時(shí)間和本地時(shí)區(qū)的實(shí)現(xiàn)方法
Docker容器通過-eTZ設(shè)置時(shí)區(qū),但部分程序如cron依賴本地時(shí)間文件,需手動修改/etc/localtime軟鏈接指向正確時(shí)區(qū),下面就來具體介紹一下,感興趣的可以了解一下2025-07-07
Docker安裝redis并且設(shè)置密碼,以及進(jìn)入容器修改密碼方式
這篇文章主要介紹了Docker安裝redis并且設(shè)置密碼,以及進(jìn)入容器修改密碼方式,2024-01-01
Docker + Nginx 實(shí)現(xiàn) Java 服務(wù)零停機(jī)發(fā)布并解決發(fā)布
本文介紹了一種低成本實(shí)現(xiàn)SpringBoot服務(wù)零停機(jī)發(fā)布的方案,通過雙實(shí)例兜底和Nginx自動重試機(jī)制解決傳統(tǒng)部署中的502問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04
docker中多階段構(gòu)建與單階段構(gòu)建的具體使用
本文主要介紹了docker中多階段構(gòu)建與單階段構(gòu)建的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-09-09
docker環(huán)境調(diào)用mysqldump進(jìn)行數(shù)據(jù)備份方式
這篇文章主要介紹了docker環(huán)境調(diào)用mysqldump進(jìn)行數(shù)據(jù)備份方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-06-06

