一、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原理与运用_第1张图片


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

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

  
SSH原理与运用_第3张图片

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


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

SSH原理与运用_第4张图片


注:具体步骤写在最后啦

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

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


1、生成公钥
SSH原理与运用_第5张图片

2、传送公钥
SSH原理与运用_第6张图片


3、对比公钥并连接
SSH原理与运用_第7张图片

SSH原理与运用


SSH原理与运用_第8张图片

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



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

SSH原理与运用_第9张图片


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

基于密钥认证步骤 
(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原理与运用_第11张图片


B2链接之前
SSH原理与运用_第12张图片


在B2上执行命令,输入中间人B1的口令
SSH原理与运用_第13张图片

此时B1的信息
SSH原理与运用_第14张图片

再来看下centos7的信息
SSH原理与运用_第15张图片

连接成功的B2
SSH原理与运用_第16张图片