SSH
SSH连接原理及ssh-key讲解
1.知识小结
- SSH是安全的加密协议,用于远程连接Linux服务器。
- SSH默认端口是22,安全协议版本SSH2,除了2之外还有SSH1(有漏洞)
- SSH服务端主要包含两个服务功能SSH远程连接和SFTP服务。
- Linux SSH 客户端包含ssh远程连接命令,以及远程拷贝scp命令等。
2输密模式
2.1双方安装这个软件包
2.2查看ssh
命令
2.3实验如下所示
2.3.1实验(一)
2.3.2实验(二)
已知对方有普通用户
yunjisuan
2.3.3退出对方账户
3无密模式
3.1服务端创建密钥
命令说明:
- 创建密钥对时,要你输入的密码,为进行密钥对验证时输入的密码(和linux角色登录的密码完全没有关系);
- 如果我们要进行的是SSH免密码连接,那么这里密码为空跳过即可。
- 如果在这里你输入了密码,那么进行SSH密钥对匹配连接的时候,就需要输入这个密码了。(此密码为独立密码)
- 用户家目录下的.ssh隐藏目录下会生成:id_rsa id_rsa.pub 两个文件。
id_rsa
是用户的私钥;id_rsa.pub
则是公钥
3.2 将公钥id_rsa.pub
文件复制到另外一台服务器(客户端)的用户家目录下的.ssh
目录下。如果对方没有.sh
这个目录,就自己创建一个,但切记要把目录权限改成700
3.3将公钥id_rsa.pub
文件复制到另外一台服务器(客户端)的用户家目录下的.ssh
目录下。
3.4客户端检查
3.5将拷贝过去的id_rsa.pub
文件里的内容追加到~/.ssh/authorized_keys
文件里(客户端)
3.6由服务端访问服务端实验如下
3.7 SSH
基于密钥的安全认证总结
- 如果我们要进行免密码的SSH连接,那么在创建密钥对的时候不输入任何密码就可以了。
- SSH基于密钥的安全认证的本质其实就是将密钥对中的公钥里的内容拷贝到对方服务器的用户家目录下的.ssh目录里的
authorized_keys
文件里。- 你想要和对方服务器的哪个用户进行密钥对认证,那么你就要把公钥拷到对方该用户的家目录下的
.ssh
目录里的authorized_keys
文件里(如果是想和普通用户进行密钥对登录,需要拷贝到/home
目录下的该用户家目录下。)ssh-keygen -t
参数可以指定密钥对的加密类型。如果不指定默认rsa加密
4.非交互式创建密钥对
4.1非交互式一条命令创建密钥对
4.2查看服务端.ssh
目录下文件
4.3通过ssh-copy-id
进行公钥的自动分发
4.4实验如下
5.开始安装sshpass免交互工具并进行SSH-key的批量分发
5.1下载epel源
并更新云yum仓库
(参照云yum)并下载软件包sshpass
5.2免交互创建密钥对
5.3免交户方式分发公钥
5.4检查推送结果
5.5实验如下
6.章节重点小结
- ssh为加密的远程连接协议。相关软件有openssh,openssl
- 默认端口22
- 协议版本1.x和2.x,2.x更安全。了解SSH协议原理
- ssh客户端包含ssh,scp,sftp命令
- ssh安全验证方式:口令和密钥,这两种都是基于口令的,SSH密钥登录的原理。
- ssh服务安全优化,修改默认端口22,禁止root远程连接,禁止dns,SSH只监听内网IP
- ssh密钥对,公钥在服务器端,比如就是锁头,私钥在客户端。