SSH
Secure Shell的缩写,意为“安全外壳协议”,是一种可以为远程登录提供安全保障的协议
OpenSSH
是SSH协议的免费开源实现
SSL
Secure Sockets Layer的缩写,是为网络通信提供安全及数据完整性的一种安全协议,在传输层对网络连接进行加密
OpenSSL
SSL的开源实现 绝大部分HTTPS请求等价于:HTTP + OpenSSL
OpenSSH的加密就是通过OpenSSL完成的
SSH的版本
- SSH协议一共2个版本
- SSH-1
- SSH-2
现在用的比较多的是SSH-2,客户端和服务端版本要保持一致才能通信
查看SSH版本(查看配置文件的Protocol字段)
客户端:/etc/ssh/ssh_config
服务端:/etc/ssh/sshd_config
SSH的通信过程
SSH的通信过程可以分为3大主要阶段
- 建立安全连接
-
在建立安全连接过程中,服务器会提供自己的身份证明
-
如果客户端并无服务器端的公钥信息,就会询问是否连接此服务器
-
客户端认证
-
SSH-2提供了2种常用的客户端认证方式
-
基于密码的客户端认证
- 使用账号和密码即可认证
-
基于密钥的客户端认证
-
免密码认证
-
最安全的一种认证方式
-
-
在客户端生成一对相关联的密钥(Key Pair):一个公钥(Public Key),一个私钥(Private Key)
-
ssh-keygen
- 一路敲回车键(Enter)即可
- OpenSSH默认生成的是RSA密钥,可以通过-t参数指定密钥类型
- 生成的公钥:~/.ssh/id_rsa.pub
- 生成的私钥:~/.ssh/id_rsa
-
-
把客户端的公钥内容追加到服务器的授权文件(~/.ssh/authorized_keys)尾部
-
ssh-copy-id root@服务器主机地址
- 需要输入root用户的登录密码
- ssh-copy-id会将客户端~/.ssh/id_rsa.pub的内容自动追加到服务器的~/.ssh/authorized_keys尾部
-
-
注意:由于是在~文件夹下操作,所以上述操作仅仅是解决了root用户的登录问题(不会影响mobile用户)
-
SSH-2默认会优先尝试“密钥认证”,如果认证失败,才会尝试“密码认证”
公钥 >> 授权文件
-
-
可以使用ssh-copy-id将客户端的公钥内容自动追加到服务器的授权文件尾部,也可以手动操作
-
复制客户端的公钥到服务器某路径
scp ~/.ssh/id_rsa.pub root@服务器主机地址:~- scp是secure copy的缩写,是基于SSH登录进行安全的远程文件拷贝命令,把一个文件copy到远程另外一台主机上
- 上面的命令行将客户端的~/.ssh/id_rsa.pub拷贝到了服务器的~地址
-
SSH登录服务器
ssh root@服务器主机地址- 需要输入root用户的登录密码
-
在服务器创建.ssh文件夹
- mkdir .ssh
-
追加公钥内容到授权文件尾部
- cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
-
删除公钥
- rm ~/id_rsa.pub
-
-
-
数据传输