Docker容器中的SSH免密登錄詳解
Docker的SSH免密登錄
在日常的開發(fā)和測試環(huán)境中經(jīng)常需要創(chuàng)建和管理Docker容器。
有時,出于調(diào)試或管理的目的,可能需要SSH到容器內(nèi)部。
本文將介紹如何創(chuàng)建一個Docker容器,它在啟動時自動運行SSH服務(wù),并支持免密登錄。
構(gòu)建支持SSH的Docker鏡像:
僅為示例,實際操作時應(yīng)選擇更強(qiáng)的密碼,并為免密登錄生成了必要的SSH密鑰。
FROM ubuntu:20.04
MAINTAINER "傷心的辣條"
# 安裝openssh-server
RUN apt-get update && apt-get install -y openssh-server && \
mkdir /var/run/sshd
# 設(shè)置root密碼(在此例中設(shè)置為'root',但在生產(chǎn)環(huán)境中,請使用更強(qiáng)的密碼)
RUN echo 'root:root' | chpasswd
# 為SSH免密登錄設(shè)置SSH key
RUN rm -f /etc/ssh/ssh_host_rsa_key && \
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' && \
rm -f /etc/ssh/ssh_host_dsa_key && \
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N '' && \
rm -f /etc/ssh/ssh_host_ecdsa_key && \
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '' && \
rm -f /etc/ssh/ssh_host_ed25519_key && \
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''
# SSH登錄設(shè)置
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# 容器啟動時啟動SSH服務(wù)
CMD ["/usr/sbin/sshd", "-D"]構(gòu)建與運行:注意映射到宿主機(jī)的22端口可能與宿主機(jī)的SSH服務(wù)沖突,可以選擇其他端口,本案例使用1234端口。
客戶端生成SSH密鑰對:
ssh-keygen
使用ssh-copy-id命令來幫助完成免密登錄的設(shè)置:
ssh-copy-id -i ~/.ssh/id_rsa.pub root@容器所在主機(jī)的IP -p 容器映射的端口
SSH連接到容器:完成以上步驟后從任何客戶端都可以使用以下命令輕松SSH到容器內(nèi),無需密碼。
ssh root@容器所在主機(jī)的IP -p 容器映射的端口
運行結(jié)果:


注意事項:在生產(chǎn)環(huán)境中,強(qiáng)烈建議不要允許root用戶通過密碼登錄。
允許SSH登錄到容器并不是一種推薦的做法,因為它可能會增加安全風(fēng)險。
如果真的需要,考慮使用更安全的方式,如SSH密鑰對,而不是密碼。
結(jié)論:Docker為我們提供了一個輕量級、隔離的環(huán)境來運行應(yīng)用和服務(wù)。雖然SSH到容器內(nèi)部不是一種推薦的操作,但在某些情況下,這可能是必要的。
原理圖解:

到此這篇關(guān)于Docker容器中的SSH免密登錄詳解的文章就介紹到這了,更多相關(guān)Docker的SSH免密登錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot Maven打包如何根據(jù)環(huán)境排除文件
文章介紹了在SpringBoot項目中,根據(jù)不同的環(huán)境(開發(fā)、測試、生產(chǎn))進(jìn)行JSP文件打包處理的方法,通過配置`pom.xml`文件中的``標(biāo)簽,可以實現(xiàn)開發(fā)環(huán)境保留`index.jsp`文件,測試環(huán)境和生產(chǎn)環(huán)境排除該文件2024-12-12
Java 創(chuàng)建動態(tài)類和查看方法列表信息的實例
這篇文章主要介紹了 Java 創(chuàng)建動態(tài)類和查看方法列表信息的實例的相關(guān)資料,需要的朋友可以參考下2017-06-06
解決Spring運行時報錯:Consider defining a bean o
該文章主要講述了在使用Spring框架時,如果遇到某個bean未找到的錯誤,應(yīng)該在配置文件中定義該bean,解決方法是在對應(yīng)的類上添加@Component注解2025-01-01
SpringBoot項目攔截器獲取Post方法的請求body實現(xiàn)
本文主要介紹了SpringBoot項目攔截器獲取Post方法的請求body,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
SpringBoot登錄驗證token攔截器的實現(xiàn)
本文主要介紹了SpringBoot登錄驗證token攔截器的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
java WSDL接口webService實現(xiàn)方式
這篇文章主要為大家詳細(xì)介紹了java WSDL接口webService實現(xiàn)方式的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04

