1、主要設置
#設置登錄密碼 apt-get install passwd passwd #安裝ssh apt-get install openssh-server #配置 shh:生成 ssh 容器的公鑰、私鑰 #注意:生成過程中需要兩次回車,以進行下一步。 cd /etc/ssh ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key #創建允許外部訪問的認知文件 mkdir -p ~/.ssh > ~/.ssh/authorized_keys #編寫容器的服務啟動腳步 vim /run.sh #寫入以下內容退出:下面內容不對,無法執行,看三(注意事項) #!/bin/bash /usr/sbin/sshd -D #設置執行權限 chmod +x /run.sh #退出 exit
2、啟動容器
如果不能啟動,去掉/run.sh,改成/bin/bash,然后手動執行/run.sh中內容
docker ps -a
docker commmit 容器id 新鏡像
docker images
#-p 2222:22 將容器的22端口服務映射到宿主機的 2222 端口上
docker run -d --name 容器名稱 ... -p 2222:22 鏡像名稱 /run.sh
3、本地ssh連接容器
ssh root@127.0.0.1 -p 2222
4、注意事項
1)將容器commit保存為鏡像,然后再次啟動時,執行/run.sh會失敗。進入容器后,手動執行run.sh中內容,又會報錯,解決方法如下。
#報錯如下 root@3f912011817b:/usr/sbin# /usr/sbin/sshd Missing privilege separation directory: /run/sshd #解決方法如下 mkdir /run/sshd /usr/sbin/sshd ps -e | grep ssh #顯示內容如下 4137 ? 00:00:00 sshd
2)如果root連接容器,需要修改: vim /etc/ssh/sshd_config