Docker容器中的SSH免密登錄詳解
Docker的SSH免密登錄
在日常的開發(fā)和測試環(huán)境中經(jīng)常需要創(chuàng)建和管理Docker容器。
有時,出于調(diào)試或管理的目的,可能需要SSH到容器內(nèi)部。
本文將介紹如何創(chuàng)建一個Docker容器,它在啟動時自動運(yùn)行SSH服務(wù),并支持免密登錄。
構(gòu)建支持SSH的Docker鏡像:
僅為示例,實(shí)際操作時應(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)建與運(yùn)行:注意映射到宿主機(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 容器映射的端口
運(yùn)行結(jié)果:
注意事項(xiàng):在生產(chǎn)環(huán)境中,強(qiáng)烈建議不要允許root用戶通過密碼登錄。
允許SSH登錄到容器并不是一種推薦的做法,因?yàn)樗赡軙黾影踩L(fēng)險。
如果真的需要,考慮使用更安全的方式,如SSH密鑰對,而不是密碼。
結(jié)論:Docker為我們提供了一個輕量級、隔離的環(huán)境來運(yùn)行應(yīng)用和服務(wù)。雖然SSH到容器內(nèi)部不是一種推薦的操作,但在某些情況下,這可能是必要的。
原理圖解:
到此這篇關(guān)于Docker容器中的SSH免密登錄詳解的文章就介紹到這了,更多相關(guān)Docker的SSH免密登錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用Spring IOC技術(shù)實(shí)現(xiàn)用戶登錄驗(yàn)證機(jī)制
這篇文章主要為大家詳細(xì)介紹了Spring IOC技術(shù)實(shí)現(xiàn)用戶登錄驗(yàn)證機(jī)制的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10詳解如何使用MyBatis實(shí)現(xiàn)數(shù)據(jù)庫的CRUD
這篇文章主要為大家詳細(xì)介紹了如何使用MyBatis實(shí)現(xiàn)數(shù)據(jù)庫的CRUD操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-12-12mybatis?@InsertProvider報(bào)錯問題及解決
這篇文章主要介紹了mybatis?@InsertProvider報(bào)錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07Java使用線程池實(shí)現(xiàn)socket編程的方法詳解
這篇文章主要為大家詳細(xì)介紹了Java使用線程池實(shí)現(xiàn)socket編程的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03GateWay路由規(guī)則與動態(tài)路由詳細(xì)介紹
這篇文章主要介紹了GateWay路由規(guī)則與GateWay動態(tài)路由,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09淺談Java中常用數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)類 Collection和Map
下面小編就為大家?guī)硪黄獪\談Java中常用數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)類 Collection和Map。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09