在docker上搭建ssh
参考资料:
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