SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH 协议可以有效防止远程管理过程中的信息泄露问题。
从客户端来看,SSH提供两种级别的安全验证:
1、基于口令的验证
只要知道帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但缺点是:不能保证你正在连接的服务器就是你想连接的服务器。以下是我画了的登录验证流程:
当第一次链接远程主机时,会提示您当前主机的”公钥指纹”,询问您是否继续,如果选择继续后就可以输入密码进行登录了,当远程的主机接受以后,该台服务器的公钥就会保存到~/.ssh/known_hosts文件中。
2、基于密钥的验证
这种验证的前提是客户端需要生成一对密钥,将公钥放到需访问的远程服务器。这种验证比上一种的好处是,不能仿冒真正的服务器,因为要仿冒必须拿到客户端生成的公钥。缺点就是验证等待过程稍长些。
如何生成密钥:
1、在客户端打开终端,执行ssh-keygen,该命令会默认在~/.ssh/目录下创建id_rsa、id_rsa.pub两个文件,分别为您的公钥和私钥。
2、将公钥id_rsa.pub文件拷贝到服务器端的~/.ssh/authorized_keys文件中,有三种方法:
· 通过scp拷贝:
· 例:scp -P 22 ~/.ssh/id_rsa.pub user@host:~/authorized_keys #可选参数-P代表指定用端口号22
· 通过ssh-copyid程序:
· 例:ssh-copy-id user@host #此种方式简单,不需追加改文件名,但不能指定端口号,默认以22端口
· 通过cat方法:
· 例:cat ~/.ssh/id_rsa.pub | ssh -p 22 user@host ‘cat>> ~/.ssh/authorized_keys’
在宿主主机上生成ssh密钥对,并创建authorized_keys 文件:
root@ubuntu-daisy:~/daisy_dockerbuild/sshd_ubuntu# ssh-keygen -t rsa
root@ubuntu-daisy:~/daisy_dockerbuild/sshd_ubuntu#cat ~/.ssh/id_rsa.pub>authorized_keys
root@ubuntu-daisy:~/daisy_dockerbuild/sshd_ubuntu# ls
authorized_keys Dockerfile
首先准备好基础镜像ubuntu,然后编写Dockerfile构建自定义镜像,达到能自定义登录功能
FROM ubuntu
MAINTAINER daisy_hu"diana_hu@foxmail.com"
# 更新源,安装sshserver
RUN exporthttp_proxy=http://proxy-prc.intel.com:911 &&