Step1
利用CentOS基礎鏡像,創建一個docker容器,主要這里要指定埠映射,必須要映射到容器內的22埠,否則無法用ssh登錄容器,
docker run -it -p 3361:22 -p 3362:8888 centos /bin/bash
注意:這里的3361和3362埠你服務器需要開放,不然后面也會無法登錄,我用的是阿里云服務器,是在防火墻中開放了這兩個埠
Step2
安裝 openssl, openssh-server 等工具
yum install -y openssl openssh-server
Step3
如果要正常啟動ssh服務,/var/run/sshd 必須存在,手動創建并啟動ssh服務:
mkdir -p /var/run/sshd
/usr/sbin/sshd -D &
此時可能會出現如下報錯:

解決方法:在docker容器內的命令列依次輸入如下代碼
ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
再次執行
/usr/sbin/sshd -D &

成功開啟ssh服務
查看sshd是否監聽22埠
yum install -y net-tools
netstat -apn | grep ssh

Step4
修改ssh組態檔
在docker容器內的命令列輸入:vim /etc/ssh/sshd_config
設定ssh的埠:Port 22

將 PermitRootLogin 的 no 改為 yes,即允許root用戶登錄

Step5
重啟ssh服務
/usr/sbin/sshd -D &
用上面方法重啟,可能還是無法用root登錄
如果不行,可以換下面命令進行ssh重啟
/etc/init.d/ssh restart
查看sshd是否監聽22埠

Step6
給docker容器添加密碼
我們必須要給docker容器設定密碼,后面才能以ssh的方式登錄容器
在容器內使用 passwd 命令創建密碼,若沒有這個命令,則用 yum install passwd 進行安裝

實戰演練
利用ssh直接登錄docker容器
ssh root@10.11.6.14 -p 3361
這里的root指的是docker容器的root用戶,不是服務器的用戶名,密碼是你上面設的docker容器的密碼
Pycharm遠程連接docker容器

常見問題:Connection refused
出現Connection refused大概率是因為你的docker容器被stop了,那ssh服務自然沒有開啟,那就不能登錄
解決方法:docker start 容器,然后用 /etc/init.d/ssh restart 開啟ssh服務
開啟成功的話會顯示下面內容
Restarting OpenBSD Secure Shell server sshd [OK]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259835.html
標籤:其他
