博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSH原理与运用
阅读量:6569 次
发布时间:2019-06-24

本文共 2592 字,大约阅读时间需要 8 分钟。

一、SSH介绍及特性

1、介绍
ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。

具体的软件实现:     OpenSSH: ssh协议的开源实现,CentOS默认安装     dropbear:另一个开源实现 SSH协议版本     v1: 基于CRC-32做MAC,不安全;man-in-middle     v2:双方主机协议选择安全的MAC方式     基于DH算法做密钥交换,基于RSA或DSA实现身份认证 两种方式的用户登录认证:    基于password     基于key    端口号:22    -------------------------------------------------------------------------------------ssh, 配置文件:/etc/ssh/ssh_config     Host PATTERN         StrictHostKeyChecking no 首次登录不显示检查提示 格式:ssh [user@]host [COMMAND]            ssh [-l user] host [COMMAND]              -p port:远程服务器监听的端口              -b:指定连接的源IP              -v:调试模式              -C:压缩方式              -X: 支持x11转发              -Y:支持信任x11转发             -t:  强制伪tty分配                 ssh -t remoteserver1 ssh remoteserver2

SSH原理与运用

2、ssh服务登录验证
当用户远程连接ssh服务器时,会复制ssh服务器 /etc/ssh/ssh_host*key.pub(CentOS7默认是 ssh_host_ecdsa_key.pub)文件中的公钥到客户机的 ~./ssh/know_hosts中。下次连接时,会自动匹配相应私钥 ,不能匹配,将拒绝连接

①基于用户和口令登录验证

1.客户端发起ssh请求,服务器会把自己的公钥发送给用户
2.用户会根据服务器发来的公钥对密码进行加密
3.加密后的信息回传给服务器,服务器用自己的私钥解密, 如果密码正确,则用户登录成功、
SSH原理与运用

  

SSH原理与运用

用的xshell连接的,之后会弹出询问密码的对话框。


②基于密钥的登录方式 :

1.首先在客户端生成一对密钥(ssh-keygen)
2.并将客户端的公钥ssh-copy-id 拷贝到服务端
3.当客户端再次发送一个连接请求,包括ip、用户名
4.服务端得到客户端的请求后,会到authorized_keys中 查找,如果有响应的IP和用户,就会随机生成一个字符串 ,例如:acdf
5.服务端将使用客户端拷贝过来的公钥进行加密,然后发 送给客户端
6.得到服务端发来的消息后,客户端会使用私钥进行解密 ,然后将解密后的字符串发送给服务端
7.服务端接受到客户端发来的字符串后,跟之前的字符串进 行对比,如果一致,就允许免密码登录

SSH原理与运用


注:具体步骤写在最后啦

环境:用6通过密钥去连接7的HR

centos6.9 user:xs 172.18.253.118
centos7.4 user:HR 172.18.250.111

1、生成公钥
SSH原理与运用

2、传送公钥

SSH原理与运用

3、对比公钥并连接
SSH原理与运用

SSH原理与运用

SSH原理与运用

通过这种方式连接以后就不用在输入密码口令了,使用scp命令同理


加密密钥方式连接相当于下面步骤第5、6、7步骤

SSH原理与运用

注:只要输入一次,以后就不用了,但退出了就要再来一次
SSH原理与运用

基于密钥认证步骤 (1) 在客户端生成密钥对     ssh-keygen -t rsa [-P ''] [-f “~/.ssh/id_rsa"]     -t 指定加密方式,-f指定加密文件    (2) 把公钥文件传输至远程服务器对应用户的家目录     ssh-copy-id [-i [identity_file]] [user@]host(3) 测试 (4) 在SecureCRT或Xshell实现基于key验证 在SecureCRT工具—>创建公钥—>生成Identity.pub文件 转化为openssh兼容格式(适合SecureCRT,Xshell不需要转化 格式),并复制到需登录主机上相应文件authorized_keys中, 注意权限必须为600,在需登录的ssh主机上执行:     ssh-keygen -i -f Identity.pub >> .ssh/authorized_keys(5)重设私钥口令:     ssh-keygen –p (6)验证代理(authentication agent)保密解密后的密钥     这样口令就只需要输入一次     在GNOME中,代理被自动提供给root用户     否则运行ssh-agent bash (7)钥匙通过命令添加给代理     ssh-add

二、SSH转发

优点:

加密 SSH Client 端至 SSH Server 端之间的通讯数据
突破防火墙的限制完成一些之前无法建立的 TCP 连接

环境

centos7 :172.18.250.11
centos6 B1:172.18.253.118
centos6 B2:172.18.253.69
要在centos7上 装上telnet包设置防火墙拒绝B2,安装完后启动:systemctl start telnet.socket

思维导图:7不允许B2直连(也就是它们ping不通),但允许B1连接。B2通过telnet封装在ssh连接B1,通过B1用telnet连接centos 7。顺便更正一下B2的地址是:172.18.253.69在后续图中可见。
SSH原理与运用


B2链接之前

SSH原理与运用

在B2上执行命令,输入中间人B1的口令
SSH原理与运用
此时B1的信息
SSH原理与运用
再来看下centos7的信息
SSH原理与运用
连接成功的B2
SSH原理与运用

转载于:https://blog.51cto.com/11566825/2106555

你可能感兴趣的文章
JSP九大内置对象与Servlet的对应关系
查看>>
十行代码分清Java 的 || 和 &&
查看>>
红黑树学习笔记(2)-插入操作
查看>>
磁盘存储和文件系统
查看>>
PHP array_diff 计算数组的差集
查看>>
SQL Server数据库性能优化之索引篇【转】
查看>>
Unity3d 规范默认 目录结构
查看>>
在javascrit中怎样来刷新页面
查看>>
python爬虫入门-简书七日热门文章数据
查看>>
C,java,Python,这些名字背后的江湖!
查看>>
bzoj1098 1301
查看>>
老方块Oracle--数值类型性能考虑
查看>>
java Map按Key排序
查看>>
java中文和unicode编码相互转换(转)
查看>>
Bzoj3626 [LNOI2014]LCA
查看>>
ios开发之--UICollectionView的使用
查看>>
Eclipse插件安装
查看>>
最有用的鸡汤
查看>>
通过java连接sqlserver数据库教程
查看>>
深入理解display属性
查看>>