zoukankan      html  css  js  c++  java
  • 二十四、SSH介绍

    1.ssh介绍:

          SSH先对联机数据包通过加密技术进行加密处理,加密后在进行数据传输,确保了传递的数据安全。(运维的一大重视点就是要对安全敏感)

          在当前的生产环境运维工作中,绝大多数企业都是SSH协议服务。不在telnet协议。

          在默认状态下,SSH服务主要有两个服务功能:1.提供类似telnet远程联机服务  2.支持sftp安全

          SSH客户端(ssh命令)还包含一个很有用的远程安全拷贝命令scp,也是通过ssh协议工作的。

    2.ssh构成

           SSH服务由服务端软件OpenSSH和客户端组成(SSH、SecureCRT,xshell),默认端口是22。SSH是一个守护进程,负责实时监听客户端请求,并进行处理。

          所以也可以理解为:SSH服务=Openssh+openssl

      查看包名:rpm -qa openssh openssl(负责加密的)

        进程     :ps -ef  |   grep  sshd

    [root@nfsserve ~]# rpm -qa openssh openssl
    openssh-5.3p1-94.el6.x86_64
    openssl-1.0.1e-15.el6.x86_64
    [root@nfsserve ~]# ps -ef |grep sshd
    root       926     1  0 May29 ?        00:00:00 /usr/sbin/sshd
    root      5400   926  0 07:33 ?        00:00:00 sshd: oldboy [priv]
    oldboy    5402  5400  0 07:34 ?        00:00:00 sshd: oldboy@pts/0
    root      5530   926  0 08:02 ?        00:00:00 sshd: [accepted]
    sshd      5531  5530  0 08:02 ?        00:00:00 sshd: [net]     
    root      5532   926  0 08:02 ?        00:00:00 sshd: [accepted]
    sshd      5533  5532  0 08:02 ?        00:00:00 sshd: [net]     
    root      5535   926  0 08:03 ?        00:00:00 sshd: oldboy [priv]
    oldboy    5537  5535  0 08:03 ?        00:00:00 sshd: oldboy@pts/1
    root      5577  5558  0 08:04 pts/1    00:00:00 grep sshd

    3.     简单的说,SSH加密技术就是将人类可以看懂的数据,通过一定的特殊程序算法,把这些数据变成杂乱的无意义的信息,然后,通过网络进行传输,到达目的地后,在通过对应的解密算法进行解密算法。

            配置文件是  /etc/ssh/sshd_config,一般服务端是公钥,客户端是私钥。有两种密钥:RSA和DSA。那么在SSH1.0只是支持RSA,2.0是两种都支持的密钥。

           当然还有很多算法,这个RSA的加密方式就是用来产生公钥与私钥的算法之一。

    1.0SSH的加密过程:

       1) 当SSH服务启动的时候,就会产生一个临时的公钥(sshd_config配置文件中)存放

    在Server中。

    [root@nfsserve ~]# grep ServerKey  /etc/ssh/sshd_config
    #ServerKeyBits 1024

       2)当SSH客户端联机请求发过来的时候,服务器会将这个临时公钥发往客户端,Client会将公钥与先前存放的公钥进行对于,看下是否一致,判断标准是Clent端的用户命令下~/.ssh/known_hosts文件内容。  

      3)客户端本地也会产生这次连接的一个私钥,结合服务器的公钥,产生一个新的密钥(keypair),用来和服务端进行通信。 

        所以1.0的SSH的联机过程如图,这里会看到当客户端发送key pair的时候,服务器端不在进行检测,所以这里是可以进行修改的,所以是不安全的,即SSH1.0是不安全的密钥。

    4.为了更改这个缺点,SSH多了一个确定联机正确性的Diffie-Hellman机制,在每次数据传输中,server都会以该机制检查数据来源是否正确,所以2是比较安全的。

    5.认证:

       在客户端client看来,SSH有两种认证方式

      1)口令认证

         linux客户端:ssh   -p52113 oldboy@192.168.0.102

         (第一次登陆,Client会将公钥与先前存放的公钥进行对于,看下是否一致,判断标准是Clent端的用户命令下~/.ssh/known_hosts文件内容。 )

    [root@djw1 ~]# cd ~/.ssh/
    [root@djw1 .ssh]# ll
    total 4
    -rw-r--r--. 1 root root 403 May 23 11:13 known_hosts
    [root@djw1 .ssh]# cat known_hosts
    [192.168.0.102]:52113 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA5WmD27wFyvlzuEvF6yJ6BAT+ZP5KOgxQJzCuDmGwRftj6vDsTaHY8za1W0kV0/IyUpv+PXc5/81xF1+G3SxlSZXhc/8//3DxsozLFA1bSSSt4Ioe6ng3Dg/B4ggkmCv2iayQOUIpxfugI75z4DbBO1rR/bsCOdu+9W0vo0pW2cdF4HnZo/kEuIX/86JiM9wp5O+uMq5rKbAyxeW0dMzi/LHcZ3iozPicaPTcF3qbEmH1wwNzDPYzX9FEYj4j7gYHWe2xw+l+03raHtDYm78rLQG1MaIquuU6+CDYKSaJ6XziGOMyk0x85Enkse/VGD69UnAsrlkmQ4NdhwzUk5SrPw==

    小结:1.切换到别的机器 ssh -p端口  user@ip

               2.到其他机器执行命令(不会切换到机器上)ssh -p 端口 user@ip 命令(全路径)

               3.当第一次连接的时候,本地会产生一个密钥文件~/.ssh/known_hosts(多个密钥)

     2)基于密钥登陆

         基于口令登陆的,需要手动输入服务器端的密码,那么基于密钥的登陆不需要手动输入密码,只是公钥在服务器端,私钥在客户端,基于密钥的安全认证也有windows和linux客户端的区分。

    这里主要说明的是linux端的配置。

       思想:基于牤牛阵法,完全不对外开放端口,留下一台服务器专门接受VPN或者相关密钥认证登陆,才能访问内网端。

     6.ssh客户端附带的远程拷贝scp命令:

          推:scp  -P52113 /data/oldboy.txt    oldboy@192.168.0.102:/tmp

          拉:scp  -P52113  oldboy@192.168.0.102:/tmp  /data/oldboy.txt   

        scp接端口时需要用P,-r复制目录  -p保持原始属性

        scp是加密的远程拷贝,可以把数据从一台机器推送到另外一台机器,也可以从其他服务器把数据拉会到本地,但是,每次都是全量拷贝(rsync增量拷贝),因此,效率不高。

    7.ssh附带的sftp:加密传输文件:(服务端有sftp的守护进程)

        

    put  文件   /路径 (上传)    get  文件   /路径(下载)

    windows的sftp如下:是windows本地和连接的linux服务之间的文件传输。

  • 相关阅读:
    八爪鱼 爬取微博中的图片到本地
    【简易采集】美团数据抓取方法 八爪鱼
    jeesite 的提示消息图标
    SpringBoot 入门 Demo
    spring 简单入门实例
    正则表达式之匹配替换
    数据结构之堆栈
    c#设计模式之装饰者模式
    c#设计模式之策略模式
    一个自然数在1700和1800之间,且被5除余3,被7除余4,被11除余6,求符合条件的数
  • 原文地址:https://www.cnblogs.com/dangjingwei/p/10977420.html
Copyright © 2011-2022 走看看