SSH

Secure Shell,用于远程安全访问服务器的协议,远程管理工具, 默认端口号22

一、加密算法

对称加密(DES)

使用同一个秘钥进行加密和解密,秘钥容易泄露

加密速度快,效率高,数据传输速度快,安全性低

流程:

  1. 发送发和接受方拥有同样的秘钥
  2. 发送方使用秘钥将明文数据加密成密文,然后发送密文给接收方
  3. 接收方使用同一个秘钥将密文解密成明文进行读取

非对称加密(RSA)

加密(公钥)和解密(私钥)使用不同的秘钥

加密速度低于对称加密,数据传输速度慢,安全性高

流程:

  1. 接收方生成秘钥对,将公钥发送给发送方
  2. 发送发使用接收方发送过来的公钥将明文数据加密成密文,然后发送密文给接收方
  3. 接收方使用私钥将密文解密成明文进行读取

二、认证流程

  1. 客户端发送登录请求
  2. 服务端接受请求,并将服务端公钥发送给客户端
  3. 客户端使用服务端公钥,将密码进行加密,并将结果发送给服务端
  4. 服务端使用服务端私钥解密客户端发送过来的密码,并验证合法性
  5. 根据验证结果,向客户端回应

三、使用

ssh

远程连接服务器

连接:ssh 用户名@IP地址

执行命令:ssh 用户名@地址 命令

选项全称作用
-llogin name指定登录用户
eg: # ssh -l user01 192.168.16.166
-pport指定端口
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.认证流程:

  1. 客户端生成秘钥对,并将公钥拷贝到服务端
  2. 客服端发送登录请求
  3. 服务端生成随机字符串,并使用客服端发送的公钥进行加密,然后发送给客户端
  4. 客户端使用私钥进行解密,并将解密后字符串发送给服务端
  5. 服务端验证字符串是否一致

注意:

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

Last modification:June 5th, 2019 at 10:53 pm