ubuntu22.04容器安裝ssh服務

eiSouthBoy發表於2024-08-04

除了特別說明外,否則以下命令均為ubuntu 22.04 容器內執行!!!

安裝

檢視ubuntu22.04 有沒有安裝openssh-server,執行命令:sudo dpkg --list | grep ssh

沒有找到openssh-server的包,很顯然,沒有安裝,那麼就開始安裝,執行:sudo apt install openssh-server

安裝完成後,透過上圖相關的包已經安裝好了。這時,檢視ssh服務的狀態,執行:service ssh status 或者 ps -ef | grep sshd。 若ssh服務沒有執行,就執行命令啟動它:service ssh start

注意:這裡為什麼用service命令,而不用systemctl命令呢? ubuntu 22.04容器沒有這個許可權

此時,你使用宿主機透過ssh客戶端去連線ubuntu 22.04 的ssh server,結果連不上,那就說明還有問題沒有解決。ubuntu 22.04 容器是宿主機的一個程序,要與ubuntu 22.04容器通訊需要宿主機對映埠給該容器。

由於建立容器時,沒有對容器進行埠對映配置,所以需要將當前容器儲存為映象A,然後以映象A建立新容器並配置埠對映。以下是配置流程:

# 特別說明:以下命令均在宿主機上執行

# 停止指定的容器
docker stop $(container_id)

# 透過指定的容器建立映象
docker commit $(container_id) $(new_imager_name)

# 檢視本地映象
docker images

# 檢視宿主機8112埠是否佔用
netstat -ap | grep 8112

# 透過指定的新映象執行容器,並對映宿主機8112埠到ubuntu 22.04容器22埠
# 對映宿主機的當前執行docker命令的目錄到ubuntu 22.04的/workspace目錄
# 設定ubuntu 22.04 總是跟隨宿主機啟動
docker run -itd -p 127.0.0.1:8112:22 --restart=always -v $PWD:/workspace -u 1000 --security-opt seccomp=unconfined ${new_imager_id}

注意:這裡對映的是127.0.0.1地址,所以只有宿主機能透過ssh連線上;如果需要其他主機也能透過ssh連線上,需要修改為0.0.0.0

宿主機的防火牆對的IP和Port有限制,所以宿主機需要在防火牆開放8112埠。

# 特別說明:以下命令均在宿主機上執行

# 檢視防火牆的狀態
sudo ufw status

# 啟動防火牆
sudo ufw enable

# 防火牆條件規則,放行8112埠
sudo ufw allow 8112

# 重啟防火牆
sudo ufw reload

連線

ssh服務配置好後,可以在宿主機使用ssh客戶端去連線,執行命令:ssh cj@localhost -p 8112 或者 ssh cj@127.0.0.1 -p 8112,接著按照提示輸入密碼。

注意:這裡的使用者cj是在ubuntu 22.04容器內已經建立好的

參考

# 配置遠端連線容器內映象(對映容器內系統的22埠到宿主機上)

相關文章