zoukankan      html  css  js  c++  java
  • 19 SSH协议

    ssh远程管理服务

    ssh协议是一个安全协议,在数据传输时,会对数据包进行处理,为了确保数据安全,ssh服务的主要功能:
    1、提供远程连接服务器的服务
    	linux远程:ssh	端口22
    	windows	rdp协议	端口3389
    2、对传输的数据进行加密
    

    telnet

    #安装
    [root@aliyun ~]# yum install telnet-server
    
    #启动
    systemctl start telnet.socket
    
    #注意:
    1、telenet只能是普通用户连接,不可以是root
    2、ssh支持root用户登录
    3、telnet数据传输过程是明文的,ssh数据传输是加密的
    

    SSH相关的命令

    属于c/s架构,ssh客户端支持windows。Linux。mac等平台

    #语法
    ssh [用户]@[IP] 
    yes(首次连接)
    #如果连接时不指定用户,则默认当前的用户
    
    #参数
    -p #指定端口
    22 #端口
    -o StrictHostKeyChecking=no	#首次连接不询问(还是输yes吧,兄弟)
    
    #x-shell连接不上服务器怎么办
    1、查网络
    ping [服务器IP]
    
    2、查看网卡 ip a/ifconfig
    
    3、查端口
    telnet ip 22端口
    
    4、检查sshd服务是否启动
    
    5、防火墙
    

    SSH验证方式

    基于账户密码远程登录

    知道服务器的端口,用户,密码,即可通过ssh客户端命令去连接
    
    #设置密码
    1、如果太难,会记不住
    2、如果太简单,容易被破解
    3、每台服务器的密码不一样
    4、密码是动态的
    5、密码三个月修改一次
    6、密码错误三次锁定用户
    7、密码是没有规律的
    

    基于密钥远程登录

    #1、生成密钥对
    [root@test1 ~]# ssh-keygen 
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:a9px1MJdpoWw8xfk7xmEyVIJFJ4oqFvTEUbV/nUogSs root@test1
    The key's randomart image is:
    +---[RSA 2048]----+
    |      .+..+=o.o  |
    |      o . ++==o  |
    |     . o .+=.=*o |
    |    . . E..*o=o+.|
    |   . o .S.+ *.o.o|
    |    o .  o . o .o|
    |   .    + .    ..|
    |       + o       |
    |      . .        |
    +----[SHA256]-----+
    
    #将公钥发送到免密登录的服务器(长的)
    [root@test1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.15.102
    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    root@192.168.15.102's password: 
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'root@192.168.15.102'"
    and check to make sure that only the key(s) you wanted were added.
    
    #测试连接
    [root@test1 ~]# ssh 192.168.15.102
    Last login: Tue Mar 30 20:32:22 2021 from 192.168.15.1
    [root@web1 ~]# 
    

    powershell与跳板机连接

    1、在powershell下执行ssh-keygen
    2、在windows下找到公钥(参考返回的路径)
    3、将公钥内容复制到跳板机上,并授权
    [root@test1 ~]# vim .ssh/authorized_keys
    [root@test1 ~]# chmod -R 600 .ssh/authorized_keys 
    4、自行测试(这里ip前要加root)
    ssh root@[ip]
    

    xshell免密登录跳板机

    1、打开xshell找工具栏中的	工具/新建密钥生成向导/
    2、选择加密文件类型和位数,下一步
    3、生成密钥对成功,下一步(名字写的有点针对性)
    4、给密钥配置信息、名字、密码...
    5、属性/公钥/
    6、复制公钥内容到跳板机上
    [root@test1 ~]# mkdir .ssh
    [root@test1 ~]# chmod 700 .ssh  #密码文件夹授权700
    [root@test1 ~]# cd .ssh/
    [root@test1 ~]# cat >authorized_keys<<EOF
    [root@test1 ~]# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABANnz3WrIVjC3rqriyL1U4WnV3UtJZoedoOnSPrA04MDiEEUCq38igG4Uwf
    [root@test1 ~]# chmod 600 authorized_keys  #密码文件授权600
    
    自行测试
    
    #方法二
    在新机上创建新用户,推送给新用户的家目录下,稳定,不易出错
    ssh-copy-id -i ~/.ssh/id_rsa.pub jump@192.168.15.41
    

    跳板机模板(加入环境变量开机自启动)

    #!/bin/bash
    #jumpserver
    lb01=172.16.1.5
    lb02=172.16.1.6
    web01=172.16.1.7
    web02=172.16.1.8
    web03=172.16.1.9
    nfs=172.16.1.31
    backup=172.16.1.41
    db01=172.16.1.51
    m01=172.16.1.61
    zabbix=172.16.1.71
    
    menu(){
            cat <<-EOF
            +-------------------------+
            |     1) lb01             |
            |     2) lb02             |
            |     3) web01            |
            |     4) web02            |
            |     5) web03            |
            |     6) nfs              |
            |     7) backup           |
            |     8) db01             |
            |     9) m01              |
            |     10) zabbix          |
            |     c) clear            |
            +-------------------------+
    EOF
    }
    
    #连接函数
    connect(){
      ping -c 1 -w 1 $1 &>/dev/null
      if [ $? -eq 0 ];then
        ssh jump@$1
      else
        echo -e "33[1;35;40m 别连了,我的哥,$2:$1机都没开连你妈!!!33[0m"
      fi
    }
    
    #控制不让输入ctrl+c,z
    trap "" HUP INT TSTP
    while true
    do
        menu
        read -p "请输入要连接的主机编号:" num
        case $num in
                1|lb01)
                  connect $lb01 lb01
                        ;;
                2|lb02)
                  connect $lb02 lb02
                        ;;
                3|web01)
                  connect $web01 web01
                        ;;
                4|web02)
                  connect $web02 web02
                        ;;
                5|web03)
                      connect $web03 web03
                        ;;
                6|nfs)
                  connect $nfs nfs
                        ;;
                7|backup)
                      connect $backup backup
                        ;;
                8|db01)
                       connect $db01 db01
                        ;;
                9|m01)
                        connect $m01 m01
                        ;;
                10|zabbix)
                        connect $zabbix zabbix
                        ;;
                c|clear)
                        clear
                        ;;
                爸爸)
                        break
                        ;;
        esac
    done
    

    SSH安全优化

    SSH作为远程连接服务,通常我们需要考虑到该服务的安全,所以需要对该服务进行安全方面的配置。
    #更改配置 vim /etc/ssh/sshd_config
    1.更改远程连接登陆的端口
    Port xxx
    
    2.禁止ROOT管理员直接登录
    PermitRootLogin no
    #注意:如果不想你的服务器与世隔绝,请验证是否有其余用户,其余用户是否有秘钥,这一点很重要!
    
    3.密码认证方式改为密钥认证
    PasswordAuthentication no
    
    4.重要服务不使用公网IP地址
    5.使用防火墙限制来源IP地址
    
    6.关闭反向解析,开启会影响效率
    UseDNS no
    
    #注意:修改完成后记得重新启动sshd让他生效哦!
    

    scp

    类似于rsync,远程拷贝,scp是全量,rsync是增量

    scp推:
    #文件
    scp [文件] root@[ip]:/tmp/
    #如果不指定用户的话,默认是root
    
    #目录
    scp -r /etc root@[ip]:/tmp/
    #注意:
    1、与rsync不同,推送时不加/或者不加,推的都是目录
    2、如果想要推送目录下的文件,用/*
    
    scp拉:
    #scp root@[ip]:/tmp/* ./
    #注意:
    1、与rsync不同,拉取时不加/或者不加,推的都是目录
    2、如果想要拉取目录下的文件,用/*
    

    参数

    -r 递归
    -P 指定端口,默认22
    -p 表示在拷贝文件时保持文件或目录属性不变
    -l 显示传输使用的带宽(默认是KB)
    

    总结

    1、scp通过ssh协议加密方式进行文件或者目录的拷贝
    2、scp连接时的用户作为拷贝文件或目录的权限
    3、scp支持数据推送和拉取,每次都是全量拷贝,效率较低
    

    sftp

    终端连接服务器推送

    1、连接终端
    sftp [ip] 
    
    2、下载
    get [文件]
    
    3、上传
    put 选择文件
    

    服务器之间连接用ftp

    1、连接终端
    sftp [ip] 
    
    2、操作本机,在目录前面加l,不加默认操作远程
    
    3、下载
    get [文件] /opt #在linux下可以指定目录拉取
    
    4、上传
    put 选择文件
    

    文件传输工具

    1、xftp
    2、filezilla
    3、flashfxp
    

    命令

    sz/rz
    	不能上传大于4G以上的文件
    	不能断点续传
    	不能上传文件夹
    	
    sftp(能不用就不用,贼鸡肋)
    	能大于4G
    	支持断点续传
    	可以上传文件夹
    
  • 相关阅读:
    hibernate中session的获取使用以及其他注意事项
    博文收集
    struts1标签-<html:radio> 使用注意事项
    HTTP 状态码含义
    基于eclipse搭建android开发环境-win7 32bit
    MySQL数据库之数据类型
    mysql数据库之基本增删改查
    mysql数据库之表的操作
    协程(单线程实现并发)
    线程
  • 原文地址:https://www.cnblogs.com/zhaokunhao/p/14602907.html
Copyright © 2011-2022 走看看