參考資料:
https://www.jianshu.com/p/c4d4ee6f3663
https://blog.csdn.net/yalishadaa/article/details/69949022
https://blog.csdn.net/m0_37961948/article/details/77894307
寫這篇文章的動機如下:我拉了一個docker,但是每次都從宿主機登錄到docker看起來十分麻煩。於是我想先做一個端口映射,然后直接通過一個公網的IP加端口登錄到docker中!下面是我的做法。
1. 首先當然要拉一個docker,並且要做一個端口映射。ssh的默認端口是22,所以我們可以選擇一個宿主機的端口XX,和docker容器的22號端口作一個映射。這樣訪問宿主機的XX端口時,訪問的就是docker的22號端口。
2. 完成第一步之后需要在docker里面安裝ssh服務。這時我們需要安裝openssh-server這個軟件。
apt-get update # 可選,更新apt-get的源 apt-get install openssh-server
安裝完成后使用 service ssh start 命令打開ssh服務。會顯示下面字樣:
* Starting OpenBSD Secure Shell server sshd [ OK ]
3. 完成第2步之后,我們就可以嘗試使用ssh登陸宿主機的XX端口了,第一次登陸需要將主機添加到信任host里面,但是!它會問你密碼?這個密碼是啥呢?我登錄也沒用密碼啊。別急,還需要下面幾個操作。
1)使用passwd命令設置登陸密碼
2)vim /etc/ssh/sshd_config
將PermitRootLogin的值改為yes
3)vim /etc/ssh/sshd_config
將PasswordAuthentication的值改為yes
完成以上三步之后 service restart ssh重啟ssh服務,再次登陸!是不是可以啦!
之前寫了這個使用密碼登錄容器內ssh的方法,下面再介紹一下如何使用公私鑰認證的方法登錄容器。
參考資料:
https://blog.csdn.net/li528405176/article/details/82810342
https://www.runoob.com/w3cnote/set-ssh-login-key.html
首先是生成公私鑰對,這個過程在客戶端上進行:
ssh-keygen -t rsa
生成的公鑰會放在~/.ssh/id_rsa.pub
這個公鑰我們需要上傳到服務器,cat到服務器的~/.ssh/authorized_keys
[root@host .ssh]$ cat id_rsa.pub >> authorized_keys
然后就是ssh的配置了:
1 編輯 /etc/ssh/sshd_config 文件,進行如下設置:
RSAAuthentication yes PubkeyAuthentication yes
2 另外,請留意 root 用戶能否通過 SSH 登錄:
PermitRootLogin yes
3 當你完成全部設置,並以密鑰方式登錄成功后,再禁用密碼登錄:
PasswordAuthentication no
4 最后,重啟 SSH 服務:
[root@host .ssh]$ service sshd restart
