SSH
Secure Shell,用于远程安全访问服务器的协议,远程管理工具, 默认端口号
22
一、加密算法
对称加密(DES)
使用同一个秘钥进行加密和解密,秘钥容易泄露
加密速度快,效率高,数据传输速度快,安全性低
流程:
- 发送发和接受方拥有
同样
的秘钥 - 发送方使用秘钥将明文数据加密成密文,然后发送密文给接收方
- 接收方使用
同一个
秘钥将密文解密成明文进行读取
非对称加密(RSA)
加密(公钥)和解密(私钥)使用不同的秘钥
加密速度低于对称加密,数据传输速度慢,安全性高
流程:
- 接收方生成
秘钥对
,将公钥
发送给发送方 - 发送发使用接收方发送过来的
公钥
将明文数据加密成密文,然后发送密文给接收方 - 接收方使用
私钥
将密文解密成明文进行读取
二、认证流程
- 客户端发送登录请求
- 服务端接受请求,并将
服务端公钥
发送给客户端 - 客户端使用
服务端公钥
,将密码进行加密,并将结果发送给服务端 - 服务端使用
服务端私钥
解密客户端发送过来的密码,并验证合法性 - 根据验证结果,向客户端回应
三、使用
ssh
远程连接服务器
连接:ssh 用户名@IP地址
执行命令:ssh 用户名@地址 命令
选项 | 全称 | 作用 |
---|---|---|
-l | login name | 指定登录用户 eg: # ssh -l user01 192.168.16.166 |
-p | port | 指定端口 eg: # ssh user01@192.168.16.166 -p22 |
scp
远程拷贝
向远程主机拷贝文件:scp 选项 需要拷贝的文件 拷贝到哪里
eg: # scp -r /tmp/file1 root@192.168.16.166:/tmp/
从远程主机下载文件:scp 选项 从哪里拷贝 拷贝到那里
eg: # scp -r root@192.168.16.166:/tmp/file1 /tmp/
选项 | 作用 |
---|---|
-r | 递归拷贝目录 |
-P | 指定远程服务器端口 eg: # scp -P6666 1.txt root@10.1.1.6:/tmp |
四、配置
配置文件: /etc/ssh/sshd_config
不允许Root登录: PermitRootLogin no
修改端口:Port 8888
更多请查看手册:# man 5 sshd_config
五、免密登录
1.认证流程:
- 客户端生成秘钥对,并将公钥拷贝到服务端
- 客服端发送登录请求
- 服务端生成随机字符串,并使用客服端发送的公钥进行加密,然后发送给客户端
- 客户端使用私钥进行解密,并将解密后字符串发送给服务端
- 服务端验证字符串是否一致
注意:
ssh服务在用户登录认证时使用的是RSA非对称加密算法,安全
认证通过后进行数据传输的时候使用DES对称加密算法,速度快
2.生成秘钥:ssh-keygen
- 公钥文件:
~/.ssh/id_rsa.pub
- 私钥文件:
~/.ssh/id_rsa
- 已认证的远程主机公钥清单:
~/.ssh/know_hosts
- 已授权的客户端公钥清档:
~/.ssh/authorized_keys
选项 | 描述 |
---|---|
-t | 指定秘钥类型 |
-f | 指定保存秘钥的文件名 |
-P | 旧密码 |
-N | 新密码 |
ssh-keygen -P '' -f ~/.ssh/id_rsa
3.拷贝公钥
拷贝公钥到服务器:ssh-copy-id code@10.1.1.6
拷贝公钥到服务器,SSH使用非默认端口时:ssh-copy-id "-p 9999 code@10.1.1.6"
拷贝公钥到服务器,方法2:scp -P 10086 ~/.ssh/id_rsa.pub code@10.1.1.6:/home/user01/.ssh/authorized_keys
注意:会进行覆盖操作
六、其他
中间人劫持
pwgen
生成随机密码
选项 | 作用 |
---|---|
-c | 至少包含一个大写字母 |
-A | 不包含大写字母 |
-n | 至少包含一个数字 |
-0(数字0) | 不包含数字 |
-s | 生成完全随机的密码 |
-B | 密码中不包含模糊字符(如1,l,o,0) |
-1 (数字1) | 一行一个密码打印 |
eg: 生成长度为10,包含大写字母,数字,不包含模糊字符且完全随机的2个密码 # pwgen -cnsB1 10 2