精华内容
下载资源
问答
  • 最近用低版本的OpenSSH... 如果公司还在用CentOS6的系统 , 那肯定存在漏洞隐患 建议升级OpenSSH ,升级OpenSSH的操作并不复杂 ,但如果是线上环境 ,那么就需要谨慎操作 特别需要注意的是 如果是通过ssh远程连...

    最近用低版本的OpenSSH(5.9p1版本) 的漏洞给系统留了个后门 , 可以劫持root密码或者给root开启后门密码 : 利用Openssh后门 劫持root密码

    如果公司还在用CentOS6的系统 , 那肯定存在漏洞隐患 

    建议升级OpenSSH , 升级OpenSSH的操作并不复杂 ,但如果是线上环境 ,那么就需要谨慎操作 

    特别需要注意的是  如果是通过ssh远程连接服务器后进行的版本升级操作 ,万一升级失败了,则ssh就远程登录不上去了 当然 ,如果服务器安装了iDRAC远程管理卡就好说了,如果没有iDRAC远程管理卡,则需要提前开启telnet远程登录(允许root账号登录)或是到机房现场进行升级操作比较妥当

    centos7默认的是OpenSSH_7.4p1版本,可以不用升级,只需升级centos6.9的openssh版本即可

    OpenSSH_6.9 包括6.9在内和6.9之前的版本 , 都存在漏洞 , 登录被影响主机查看OpenSSH版本号,如在影响范围内,则对OpenSSH进行版本升级或更新

    #!/bin/bash
    #关闭iptables防火墙和selinux
    /etc/init.d/iptables stop
    /bin/sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
    /usr/sbin/setenforce 0
    #备份ssh原来配置
    cp -rf /etc/ssh /etc/ssh.bak
    #安装配置telnet,暂时允许root用户远程telnet,以防ssh升级后远程登录不了
    echo "Y"|/usr/bin/yum install telnet-server
    /bin/sed -i 's/= yes/= no/g' /etc/xinetd.d/telnet
    /etc/init.d/xinetd start
    /etc/init.d/xinetd restart
    mv /etc/securetty /etc/securetty.bak
    #安装配置新版本openssh
    echo "Y"|/usr/bin/yum install -y gcc openssl-devel pam-devel rpm-build
    cd /usr/local/src
    /usr/bin/wget https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-7.8p1.tar.gz
    /bin/tar -xf openssh-7.8p1.tar.gz
    cd /usr/local/src/openssh-7.8p1
    ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib --with-md5-passwords --with-tcp-wrappers
    make -j 4 && make install
    /bin/sed -i '/^#PermitRootLogin/s/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
    /bin/sed -i 's_#PermitRootLogin yes_PermitRootLogin yes_g' /etc/ssh/sshd_config
    sed -i '/^GSSAPICleanupCredentials/s/GSSAPICleanupCredentials yes/#GSSAPICleanupCredentials yes/' /etc/ssh/sshd_config
    sed -i '/^GSSAPIAuthentication/s/GSSAPIAuthentication yes/#GSSAPIAuthentication yes/' /etc/ssh/sshd_config
    sed -i '/^GSSAPIAuthentication/s/GSSAPIAuthentication no/#GSSAPIAuthentication no/' /etc/ssh/sshd_config
    service sshd start
    service sshd restart
    /usr/bin/ssh -V
    # 关闭telnet远程登录
    NUM=$(/usr/sbin/lsof -i:23|wc -l)
    if [ $NUM -ne 0 ];then
      mv /etc/securetty.bak /etc/securetty
    fi
    一键安装脚本

    查看版本

    # 查看系统版本 , 最小化安装可能会没有centos-release的软件包 , 可以用下面的命令查看
    [root@DaMoWang ~]# rpm -q centos-release
    centos-release-6-9.el6.12.3.x86_64
    [root@DaMoWang ~]# cat /etc/centos-release 
    CentOS release 6.9 (Final)
    [root@DaMoWang ~]# cat /etc/issue
    CentOS release 6.9 (Final)
    Kernel \r on an \m
    
    # 查看SSH版本 
    [root@DaMoWang ~]# ssh -V
    OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
    [root@DaMoWang ~]# ssh -V
    OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
    [root@DaMoWang ~]# openssl version -a
    OpenSSL 1.0.1e-fips 11 Feb 2013
    built on: Wed Mar 22 21:43:28 UTC 2017
    platform: linux-x86_64
    options:  bn(64,64) md2(int) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx) 
    compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DKRB5_MIT -m64 -DL_ENDIAN -DTERMIO -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -Wa,--noexecstack -DPURIFY -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
    OPENSSLDIR: "/etc/pki/tls"
    engines:  rdrand dynamic 

    备份ssh目录

    [root@DaMoWang ~]# cp -rf /etc/ssh{,.bak}

    安装telnet , 避免ssh升级出现问题 ,导致无法远程管理

    [root@DaMoWang ~]# yum -y install telnet-server
    [root@DaMoWang ~]# vim /etc/xinetd.d/telnet
    # default: on
    # description: The telnet server serves telnet sessions; it uses \
    #       unencrypted username/password pairs for authentication.
    service telnet
    {
            flags           = REUSE
            socket_type     = stream
            wait            = no
            user            = root
            server          = /usr/sbin/in.telnetd
            log_on_failure  += USERID
            disable         = no    # 将默认的yes改为no , 否则telnet启动后,23端口就会起不来
    }

    重启telnet服务

    [root@DaMoWang ~]# /etc/init.d/xinetd restart
    停止 xinetd:                                              [确定]
    正在启动 xinetd:                                          [确定]
    # 查看服务是否开启
    [root@DaMoWang ~]# netstat -antup|grep 23
    tcp        0      0 :::23                       :::*                        LISTEN      2293/xinetd       

    如果是线上服务器 , 最好是添加防火墙策略 , 尽量不要关闭防火墙

    [root@DaMoWang ~]# iptables -I INPUT -p tcp --dport 23 -j ACCEPT
    [root@DaMoWang ~]# iptables -I INPUT -p udp --dport 23 -j ACCEPT
    # 临时关闭SElinux
    [root@DaMoWang ~]# getenforce 
    Enforcing
    [root@DaMoWang ~]# setenforce 0

    虽然把23端口放行了 , 但是linux默认是不允许root用户以telnet的方式登录linux主机的 , 如果要用root用户登录 , 那么可用以下方法实现

    # 修改securetty文件 增加pts配置 如果登录用户较多,需要更多的pts/*
    [root@DaMoWang ~]# vim /etc/securetty 
    
    # 或者直接删除或修改文件名 , 避开验证规则实现root用户远程登录
    [root@DaMoWang ~]# rm -f /etc/securetty 

    测试远程登录root用户

    [root@test ~]# hostname -I
    192.168.94.11 
    [root@test ~]# telnet 192.168.94.66
    Trying 192.168.94.66...
    Connected to 192.168.94.66.
    Escape character is '^]'.
    CentOS release 6.9 (Final)
    Kernel 2.6.32-696.el6.x86_64 on an x86_64
    DaMoWang.localdomain login: root
    Password: 
    Last login: Mon Jun  4 22:52:19 from 192.168.94.1
    [root@DaMoWang ~]# hostname -I
    192.168.94.66
    一般不建议直接用root用户远程通过telnet登陆系统,因为telnet在数据传输过程采用明文方式,如果,数据包被人截获,将会很容易获取root用户的密码
    还是建议以普通用户通过telnet远程登陆,然后su到root,这样相对比较安全。如果非要用root用户远程连接,建议采用SSH
    如上操作后,就可以使用root账号进行telnet登录服务器了 OpenSSH升级后还需禁止root用户进行telnet登录
     
    安装高版本的OpenSSH的依赖包
    [root@DaMoWang ~]# yum -y install  gcc openssl-devel pam-devel rpm-build tcp_wrappers-devel

    下载高版本的OpenSSH 

    https://www.openssh.com/

    进到官网看到今天刚好更新7.8版本的源码包 , 就用最新版本的来最升级吧

    [root@DaMoWang src]# cd /usr/local/src/
    [root@DaMoWang src]# ll
    总用量 1512
    -rw-r--r--. 1 root root 1548026 8月  25 2018 openssh-7.8p1.tar.gz
    [root@DaMoWang src]# tar xf openssh-7.8p1.tar.gz 
    [root@DaMoWang src]# cd openssh-7.8p1
    [root@DaMoWang openssh-7.8p1]# ./configure --prefix=/usr \
     --sysconfdir=/etc/ssh \
     --with-pam \
     --with-zlib \
     --with-md5-passwords \
     --with-tcp-wrappers \
     && make -j 4 && make install

    有提示 , 看看是否安装成功

    /etc/ssh/ssh_config already exists, install will not overwrite
    /etc/ssh/sshd_config already exists, install will not overwrite
    /etc/ssh/moduli already exists, install will not overwrite
    ssh-keygen: generating new host keys: ECDSA ED25519 
    /usr/sbin/sshd -t -f /etc/ssh/sshd_config
    /etc/ssh/sshd_config line 81: Unsupported option GSSAPIAuthentication
    /etc/ssh/sshd_config line 83: Unsupported option GSSAPICleanupCredentials
    [root@DaMoWang openssh-7.8p1]# echo $?
    0

    修改配置文件,允许root登录

    [root@DaMoWang openssh-7.8p1]# sed -i '/^#PermitRootLogin/s/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
    [root@DaMoWang openssh-7.8p1]# grep RootLogin /etc/ssh/sshd_config
    PermitRootLogin yes

    重启SSH服务

    [root@DaMoWang openssh-7.8p1]# service sshd restart
    停止 sshd:                                                [确定]
    正在启动 sshd:/etc/ssh/sshd_config line 81: Unsupported option GSSAPIAuthentication
    /etc/ssh/sshd_config line 83: Unsupported option GSSAPICleanupCredentials
                                                               [确定]

    报错解决方 , 只需把提示错误的行注释掉即可

    再重启SSH服务

    [root@DaMoWang openssh-7.8p1]# service sshd restart
    停止 sshd:                                                [确定]
    正在启动 sshd:                                             [确定]
    [root@DaMoWang openssh-7.8p1]# service sshd status
    openssh-daemon (pid  12918) 正在运行...

    查看SSH服务版本

    [root@DaMoWang openssh-7.8p1]# ssh -V
    OpenSSH_7.8p1, OpenSSL 1.0.1e-fips 11 Feb 2013

    在升级SSH时你的SSH是不会因为升级或重启服务而断掉的

    注意 :

    OpenSSH升级后,一定要修改/etc/ssh/sshd_config的 PermitRootLogin no 改为 PermitRootLogin yes ,然后再重启OpenSSH服务
    否则,再另开一个终端窗口,使用root用户ssh登录该机器就会失败了,因为此时ssh已经禁止root用户登录了

    还有禁止DNS反向解析 , 修改端口号等细节需要注意

    SSH可以连接 , 在线升级成功

    [root@test ~]# ssh -p22 192.168.94.66
    The authenticity of host '192.168.94.66 (192.168.94.66)' can't be established.
    ECDSA key fingerprint is SHA256:/r5E0VYms6owRZhRXVckaVAgrT5eytIEUO7+D80rfbU.
    ECDSA key fingerprint is MD5:1a:0e:a2:82:a5:08:bc:ed:23:7b:f7:c3:47:f0:dd:3b.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.94.66' (ECDSA) to the list of known hosts.
    root@192.168.94.66's password: 
    Last login: Sat Aug 25 01:12:57 2018 from 192.168.94.66
    [root@DaMoWang ~]# hostname -I
    192.168.94.66 

    这是源码编译升级 , 如果主机使用update升级更新系统 , 那么OpenSSH的版本会回退默认版本

    顺便说一下 , 之前用CentOS7更换OpenSSH版本 , 有坑 , systemctl restart sshd 启动服务超时 , 服务启动失败 , 但是重启服务那短暂的时间 , 还是可以连接上ssh的 

    原因很多 , 根据自身实际情况来解决 

    升级成功后不能使用systemctl start sshd启动程序 : 

    1、编译安装时未启用某些功能支持导致使用旧配置文件无法启动sshd,如GSSAPIAuthentication、UsePrivilegeSeparation
    2、配置文件权限错误,导致无法启动,如:ssh_host_rsa_key、ssh_host_ecdsa_key、ssh_host_ed25519_key

    升级成功后输入密码无法登录系统 :

    1、未对配置文件进行修改,openssh7.5默认配置不允许使用root登录系统
    2、pam配置文件错误或丢失
    3、配置文件中未启用pam选项:UsePAM

    如果实在运行不了ssh服务 , 那么好 , 就利用那重启服务短暂的空隙 , 只需要让服务无限重启 , 保持ssh的进程即可 , 这个方法并不能解决实际问题 , 不过在没找到问题原因之前 , 可以暂时使用

    [root@test ~]# cat /etc/centos-release
    CentOS Linux release 7.5.1804 (Core) 
    [root@test ~]# vim /opt/restart-ssh.sh
    #/bin/bash
    ps -ef|grep "systemctl restart sshd"|awk '{print $2}'|xargs kill -9
    nohup systemctl restart sshd &
    # 服务启动超时 , 杀掉ssh进程 , 再重启ssh服务
    # 加到计划任务中 10秒执行一次

     

     

    转载于:https://www.cnblogs.com/bigdevilking/p/9532664.html

    展开全文
  • ssh服务

    千次阅读 2020-02-09 10:05:29
    ssh服务 ssh: secure shell, protocol, 22/tcp, 安全的远程登录,代替 telnet 具体的软件实现: OpenSSH: ssh协议的开源实现,CentOS默认安装 dropbear:另一个开源实现 SSH协议版本 v1: 基于CRC-32做MAC,不安全;...

    ssh服务

    ssh: secure shell, protocol, 22/tcp, 安全的远程登录,代替 telnet
    具体的软件实现:

    • OpenSSH: ssh协议的开源实现,CentOS默认安装
    • dropbear:另一个开源实现
      SSH协议版本
    • v1: 基于CRC-32做MAC,不安全;man-in-middle
    • v2:双方主机协议选择安全的MAC方式,基于DH算法做密钥交换,基于RSA或DSA实现身份认证

    公钥交换

    • 客户端发起链接请求
    • 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
    • 客户端生成密钥对
    • 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
    • 客户端发送加密后的值到服务端,服务端用私钥解密,得到Res
    • 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
    • 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

    openssh

    Openssh软件相关包:

    • openssh
    • openssh-clients
    • openssh-server
      基于C/S结构工具
      客户端:
    • Linux Client: ssh, scp, sftp,slogin
    • Windows Client:xshell, MobaXterm,putty, securecrt, sshsecureshellclien

    客户端ssh命令

    ssh命令是ssh客户端,允许实现对远程系统经验证地加密安全访问
    当用户远程连接ssh服务器时,会复制ssh服务器/etc/ssh/ssh_host*key.pub文件中的公钥到客户机的
    ~./ssh/know_hosts中。下次连接时,会自动匹配相应私钥,不能匹配,将拒绝连接
    ssh客户端配置文件:/etc/ssh/ssh_config

    主要配置

    #StrictHostKeyChecking ask
    首次登录不显示检查提示
    StrictHostKeyChecking no 
    #   IdentityFile ~/.ssh/id_rsa
    #   IdentityFile ~/.ssh/id_dsa
    #   IdentityFile ~/.ssh/id_ecdsa
    #   IdentityFile ~/.ssh/id_ed25519
    #   Port 22

    格式:

    ssh [user@]host [COMMAND]
    ssh [-l user] host [COMMAND]

    常见选项:

    -p port:远程服务器监听的端口
    
    -b:指定连接的源IP
    
    -v:调试模式
    
    -C:压缩方式
    
    -X:支持x11转发
    
    -t:强制伪tty分配,如:ssh -t remoteserver1 ssh -t remoteserver2  ssh  
    
    remoteserver3
    
    -o option  如:-o StrictHostKeyChecking=no
    [root@VM_0_3_centos|15|~]#ssh -t 10.0.06 ssh -t 10.0.0.7 ssh -t 10.0.0.8
    

    ssh登录验证方式介绍

    ssh服务登录的验证方式

    • 用户/口令
    • 基于密钥

    基于用户和口令登录验证

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

    基于密钥的登录方式

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

    实现基于密钥的登录方式

    在客户端生成密钥对
    ssh-keygen -t rsa [-P ‘’] [-f “~/.ssh/id_rsa"]
    保存位置
    默认放在家目录的.ssh

    [root@centos7|~]#cat .ssh/known_hosts 
    49.234.76.217 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIZVq9onc11NLGtQkTGC8Quq1JiTRIxLTGoj4BEgcr1XGqWPb4KGIIKR6CfKpG7iWkeu1m47DfCVMR2B1zmLuvI=
    192.168.142.134 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCzamNjm7jf2s0SOZgvTAQ0N2iRVubAR6YLK+2JXnzhy3SvtNzzY+Dr1M/qr9tnBm1ZO+qKO3ceXfbyxRGQI3RQ=
    192.168.142.131 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBJg7FbWAYB0EHLCu8lM9b9Pz+CTUej6A/pvuHWQ9h3hj6kPoyPnQKI8Vn9XIXLho83zpTBvV3wD1LZGKe9NZBQ=
    [root@centos7|~]#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:Yztkwjb+rXGL675YU4QSVmFcVNZSpJaQQn64vYTsAIc root@centos7
    The key randomart image is:
    +---[RSA 2048]----+
    |      o+=++oo+o  |
    |     o +oo.o.o.  |
    |    E o +.o +.   |
    |     + o * .     |
    |      * S +      |
    |     o O = .     |
    |      . B o      |
    |       + B .     |
    |      .oO+o      |
    +----[SHA256]-----+
    [root@centos7|~]#ls .ssh/
    id_rsa  id_rsa.pub  known_hosts
    [root@centos7|~]#cat .ssh/id_rsa
    -----BEGIN RSA PRIVATE KEY-----
    MIIEowIBAAKCAQEAqkGAdE/KluKhnfUgitGrh+crtnHGxYkRIoKghoioV8cgaY46
    kfGeLDul8d4tU9xwgfFgVdX5/30rI2C2dC0ZJ91nD0YvJkI0a97mE6wyqcqwwWdY
    gmW15VvKJby+d2FPSlCx1qFdiMzyjpM84YQlGBVPyZnOcUSHgShq2eP/RZJ8gmXx
    x/aLfAeNpIz4BXYeC3jNQdSnjg2A7jlYMEYVDgHEGdn0q3qjnxpR+GAdkw8ZcKa2
    iQZgcVV7IrrJ5+l173YYomeLS70xyc4XcyAHXVX6InqElaAG3y0Fh3NWqGRgC0rU
    QmFOtc2f68Olcc0cXPR4yqbbnGUvPJ6c8ki1WwIDAQABAoIBAQCokzaW87JJ95fC
    iMVx7eyDIbc8bCc9y1t16hT7YDAeyYEkQrlna+8LKPxEIZKL6EZVwyN5meZwvASM
    gOPm4Ah6WlQC4aEppn+1FvyEGgoH6DNfK+6NHhwePuZGuz1zgpw5nvCW7StpmlPI
    K60qNedskx1vJaUsrYflsJkrqP5GaQjkD4+lSUeWqb/1xpZuNZEvsmdv79t9zHCu
    cKS9w72/FAm5i9XxbN8AkMaRdzVNzOs2ujRVuQhwj91vv7C6/8DERKtX0fYetwJj
    KlA2hrazJwqS9Az3MQOMOlZtbkCJbC/NQEiwv0eCzsLnVqsGjwgZRkBnHRvLyNNY
    MDajq9cRAoGBANYdN2E1vnSXTNJXL8SAZ0fPTqXC55Xv70HoCcS6AtKkHaOMjVii
    RBwrA0SqskiCLX/FkF2RFGWY3CPtJg1NbMewGOAZ+jMFOAmpBnDjQNbnvfiG006U
    AmZCVbzkUEljQnEAKuATznIvJtz/mTMWX5n0hF4tzhQblrtBAcrLDTe3AoGBAMuP
    39g4K+9Y/shm5RQxNT/FNmVAbAyd155RxwBkvIz5OAVzU4H0IoaMXoqRiUoVKCq5
    e0CIWwXAZkkgbjz5vI2pHKHv6zHpCB19w5bvmdQ07xmoWJ3CL5YxTgmmbKsRp05g
    QK7UibEhDh4F8/J3ejvcG6PLp2HxoowPWxVxJYd9AoGAYHQq5XTDhlw+NCcokpnR
    bOz7nfquPsImgwcXl3LAIMnjvDBt4DbA/ft2bnGC/Nz/yCZkwXHAwX/Z86k6UhXF
    4jL3EcVCC8fXFar6BtKo++bLknCSMjzE0/IgE4a6kETRwnvz1Ju3jYKmPDo8dmIm
    0QDwvEhgJHjFLze6qfNM0gMCgYAsN8iME0eX6mEN7yv7wuSqQZCbVe8innbj8Sel
    Mjyy8r/0jySoqfuF9p/iwdJswUPEZB4d2oDLMwwE/oJzxFvs+bs6gf85DEGzBkqi
    UtG7gvQdQrBdNH1ZxsQI3JnmXyNUpxvl3k06qM+EPg7LsKBguGNYpThq0i5Y9kz2
    z2kzkQKBgEbMca+Vx0qtE2M3HNZu9YAe9MFSF6V4UnqUXcjVWGdosMjHuTIYkGhY
    HfTPzacrEA+vlDQQaJivKF1lq6gORKGqQtuEPHPmlzaa2gumMD8+sPSvZ2fy92D4
    XROaPwNYY8w/wM0pdEvhQ200tyfDKefkPUA59a/iViKOjaVk8AzE
    -----END RSA PRIVATE KEY-----
    [root@centos7|~]#cat .ssh/id_rsa.pub 
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqQYB0T8qW4qGd9SCK0auH5yu2ccbFiREigqCGiKhXxyBpjjqR8Z4sO6Xx3i1T3HCB8WBV1fn/fSsjYLZ0LRkn3WcPRi8mQjRr3uYTrDKpyrDBZ1iCZbXlW8olvL53YU9KULHWoV2IzPKOkzzhhCUYFU/Jmc5xRIeBKGrZ4/9FknyCZfHH9ot8B42kjPgFdh4LeM1B1KeODYDuOVgwRhUOAcQZ2fSreqOfGlH4YB2TDxlwpraJBmBxVXsiusnn6XXvdhiiZ4tLvTHJzhdzIAddVfoieoSVoAbfLQWHc1aoZGALStRCYU61zZ/rw6VxzRxc9HjKptucZS88npzySLVb root@centos7

    把公钥文件传输至远程服务器对应用户的家目录

    [root@centos7|~]#cat /etc/ssh/ssh_config 
    #	$OpenBSD: ssh_config,v 1.30 2016/02/20 23:06:23 sobrado Exp $
    
    # This is the ssh client system-wide configuration file.  See
    # ssh_config(5) for more information.  This file provides defaults for
    # users, and the values can be changed in per-user configuration files
    # or on the command line.
    
    # Configuration data is parsed as follows:
    #  1. command line options
    #  2. user-specific file
    #  3. system-wide file
    # Any configuration value is only changed the first time it is set.
    # Thus, host-specific definitions should be at the beginning of the
    # configuration file, and defaults at the end.
    
    # Site-wide defaults for some commonly used options.  For a comprehensive
    # list of available options, their meanings and defaults, please see the
    # ssh_config(5) man page.
    
    # Host *
    #   ForwardAgent no
    #   ForwardX11 no
    #   RhostsRSAAuthentication no
    #   RSAAuthentication yes
    #   PasswordAuthentication yes
    #   HostbasedAuthentication no
    #   GSSAPIAuthentication no
    #   GSSAPIDelegateCredentials no
    #   GSSAPIKeyExchange no
    #   GSSAPITrustDNS no
    #   BatchMode no
    #   CheckHostIP yes
    #   AddressFamily any
    #   ConnectTimeout 0
    #   StrictHostKeyChecking ask
    #   IdentityFile ~/.ssh/identity
    #   IdentityFile ~/.ssh/id_rsa
    #   IdentityFile ~/.ssh/id_dsa
    #   IdentityFile ~/.ssh/id_ecdsa
    #   IdentityFile ~/.ssh/id_ed25519
    #   Port 22
    #   Protocol 2
    #   Cipher 3des
    #   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
    #   MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
    #   EscapeChar ~
    #   Tunnel no
    #   TunnelDevice any:any
    #   PermitLocalCommand no
    #   VisualHostKey no
    #   ProxyCommand ssh -q -W %h:%p gateway.example.com
    #   RekeyLimit 1G 1h
    #
    # Uncomment this if you want to use .local domain
    # Host *.local
    #   CheckHostIP no
    
    Host *
    	GSSAPIAuthentication yes
    # If this option is set to yes then remote X11 clients will have full access
    # to the original X11 display. As virtually no X11 client supports the untrusted
    # mode correctly we set this to yes.
    	ForwardX11Trusted yes
    # Send locale-related environment variables
    	SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
    	SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
    	SendEnv LC_IDENTIFICATION LC_ALL LANGUAGE
    	SendEnv XMODIFIERS
    [root@centos7|~]#ssh-copy-id --help
    
    /usr/bin/ssh-copy-id: ERROR: invalid option (--help)
    
    Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname
    	-f: force mode -- copy keys without trying to check if they are already installed
    	-n: dry run    -- no keys are actually copied
    	-h|-?: print this help
    ---------把公钥文件传输至远程服务器对应用户的家目录------------
    [root@centos7|~]#ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.142.131
    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.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.142.131's password:' 
    
    Number of key(s) added: 1
    
    Now try logging into the machine, with:   "ssh 'root@192.168.142.131'"
    and check to make sure that only the key(s) you wanted were added.
    
    [root@centos7|~]#ssh 192.168.142.131
    123123123
    Web console: https://Centos8:9090/ or https://192.168.142.131:9090/
    
    Last login: Mon Feb  3 23:19:53 2020 from 192.168.142.140
    [root@Centos8|1|~]#exit
    logout
    Connection to 192.168.142.131 closed.
    

    可以直接ssh root@10.0.0.1 useradd执行命令

    ssh-copy-id 10.0.0.1 不用生成私钥直接拷贝过去就能实现基于key部署

    重设私钥口令:

    ssh-keygen –p

    [root@centos6|24|.ssh]#ssh-keygen -p
    Enter file in which the key is (/root/.ssh/id_rsa): 
    Key has comment '/root/.ssh/id_rsa'
    Enter new passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved with the new passphrase.

    验证代理(authentication agent)保密解密后的密钥,口令就只需要输入一次,在GNOME中,代理被自动提供给root用户

    #启用代理
    ssh-agent bash
    #钥匙通过命令添加给代理
    ssh-add
    [root@centos7|.ssh]#ssh-keygen -p
    Enter file in which the key is (/root/.ssh/id_rsa):    
    Enter new passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved with the new passphrase.
    [root@centos7|.ssh]#ssh-agent bash
    [root@centos7 .ssh]# ssh-add
    Enter passphrase for /root/.ssh/id_rsa: 
    Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
    [root@centos7 .ssh]# ssh-add
    Enter passphrase for /root/.ssh/id_rsa: 
    Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)
    [root@centos7 .ssh]# ssh 192.168.142.131
    123123123
    Web console: https://Centos8:9090/ or https://192.168.142.131:9090/
    
    Last login: Wed Feb  5 23:08:23 2020 from 192.168.142.134

    在SecureCRT或Xshell实现基于key验证

    • 工具–新建用户密钥生成向导(密钥类型RSA,长度1024)–设置密码–导出到桌面
    • rz -E 复制到centos主机上 文件名(id rsa_1024(windows).pub)
      cat id_rsa_1024(windows).pub >> .ssh/authorized_keys
    • Xshell上新建链接(用户身份验证–基于Public_key验证)
      用户密钥(选择对应密钥)

    范例:expect实现批量基于ssh的key部署

    #!/bin/bash   需要安装expect命令
    expect实现批量基于ssh的key部署
    PASS=magedu         #密码
    rpm -q expect &> /dev/null || yum -y install expect &> /dev/null                #空密码
    ssh-keygen  -t rsa -P "" -f /root/.ssh/id_rsa &> /dev/null && echo "ssh key is created"
    while read IP ;do
    expect &> /dev/null <<EOF  #或者expect <<EOF   &> /dev/null
    set timeout 20
    spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$IP
    expect {
    "yes/no" { send "yes\n";exp_continue }
    "password" { send "$PASS\n" }
    }
    expect eof
    EOF
    echo $IP is ready
    done < hosts.txt         #IP地址

    其它ssh客户端工具

    scp命令:

    scp [options] SRC... DEST/

    两种方式:

    scp [options] [user@]host:/sourcefile /destpath
    scp [options] /sourcefile [user@]host:/destpath

    常用选项:

    • -C 压缩数据流
    • -r 递归复制
    • -p 保持原文件的属性信息
    • -q 静默模式
    • -P PORT 指明remote host的监听的端口
    把对面的文件拉过来
    [root@centos7|~]#scp root@192.168.142.131:/etc/fstab .
    把自己的文件发过去
    [root@centos7|~]#scp /etc/fstab root@192.168.142.131:/data
    ---
    ### rsync命令 计划任务备份
    **基于ssh和rsh服务实现高效率的远程系统之间复制文件,使用安全的shell连接做为传输方式,比scp更快,只复制不同的文件**
    - rsync  -av /etc server1:/tmp #复制目录和目录下文件
    - rsync  -av /etc/ server1:/tmp #只复制目录下文件
    常用选项:
    ```bash
    -n 模拟复制过程
    -v 显示详细过程
    -r 递归复制目录树
    -p 保留权限
    -t 保留时间戳
    -g 保留组信息
    -o 保留所有者信息
    -l 将软链接文件本身进行复制(默认)
    -L 将软链接文件指向的文件复制
    -a 存档,相当于–rlptgoD,但不保留ACL(-A)和SELinux属性(-X)
    --delete 源数据删除,目标数据也自动同步删除
    #计划任务自动同步
    */30 * * * 1,3,5 /usr/bin/rsync --delete -av /etc/ 192.168.247.132:/tmp
    */30 * * * 1,3,5 /usr/bin/rsync --delete -av 192.168.247.132:/tmp /etc/ 

    sftp命令

    交互式文件传输工具,用法和传统的ftp工具相似,利用ssh服务实现安全的文件上传和下载
    使用ls cd mkdir rmdir pwd get put等指令,可用?或help获取帮助信息

    sftp [user@]host
    sftp> help
    [root@centos7|~]#sftp root@10.0.0.6
    The authenticity of host '10.0.0.6 (10.0.0.6)' can't be established.
    RSA key fingerprint is SHA256:g/tKg5vJXjeoO1wmetlPElLS+VBYE7yuXqcO81Caf8c.
    RSA key fingerprint is MD5:14:ce:92:01:a5:08:50:02:17:ba:8a:6c:61:18:0e:d3.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '10.0.0.6' (RSA) to the list of known hosts.
    root@10.0.0.6's password: 
    Connected to 10.0.0.6.
    sftp> get /data/lost+found/
    Fetching /data/lost+found/ to lost+found
    Cannot download non-regular file: /data/lost+found/
    sftp> bye
    

    ssh高级应用

    SSH端口转发
    SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据。但是,SSH 还能够将其他 TCP 端口
    的网络数据通过 SSH 链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做“隧道” (tunneling),这是因为 SSH 为其他 TCP 链接提供了一个安全的通道来进行传输而得名。例如,
    Telnet,SMTP,LDAP 这些 TCP 应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传
    输。而与此同时,如果工作环境中的防火墙限制了一些网络端口的使用,但是允许 SSH 的连接,也能
    够通过将 TCP 端口转发来使用 SSH 进行通讯
    SSH 端口转发能够提供两大功能:

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

    SSH本地端口转发

    ssh -L localport:remotehost:remotehostport   sshserver

    选项:

    -f 后台启用
    -N 不打开远程shell,处于等待状态
    -g 启用网关功能

    范例:

    #当访问本机的9527的端口时,被加密后转发到sshsrv的ssh服务,再解密被转发到telnetsrv:23
    #data<-->localhost:9527 <-->localhost:XXXXX<-->sshsrv:22<-->sshsrv:YYYYY<--
    >telnetsrv:23
    
    ssh –L 9527:telnetsrv:23 -Nfg sshsrv
    telnet 127.0.0.1 9527

    示例:
    8(telnet-client)–>7(跳板机)–>18(telnet-server)(23)

    18 iptables -A INPUT -s 10.0.0.8 REJECT #禁止8直接连18
    yum install -y telnet  #安装telnet包
    systemctl start telnet.socket   #启用服务
    7 telnet 10.0.0.18 #只允许普通用户连接
    8 ssh –fNL 9527:10.0.0.18:23 10.0.0.7 #建立本地端口转发
    8 telnet 127.0.0.1 9527 #连接

    SSH远程端口转发

    ssh -R sshserverport:remotehost:remotehostport sshserver

    范例:

    #让sshsrv侦听9527端口的访问,如有访问,就加密后通过ssh服务转发请求到本机ssh客户端,再由本机解
    密后转发到telnetsrv:23
    #Data<-->sshsrv:9527<-->sshsrv:22<-->localhost:XXXXX<-->localhost:YYYYY<--
    >telnetsrv:23
     
    ssh –R 9527:telnetsrv:23 –Nf sshsrv

    示例:
    8(telnet-client)<–7(跳板机)–>18(telnet-server)(25)

    18 yum install postfix -y
    7 ssh -fRN 9527:10.0.0.18:25 10.0.0.8
    telnet 127.0.0.1 9527

    SSH动态端口转发(2.5)

    示例:

    当用firefox访问internet时,本机的1080端口做为代理服务器,firefox的访问请求被转发到
    sshserver上,由sshserver替之访问internet
    #ssh -D 1080 root@sshserver -fNg
    在本机firefox设置代理socket proxy:127.0.0.1:1080
    curl --socks5 127.0.0.1:1080 http://www.google.com

    X 协议转发

    所有图形化应用程序都是X客户程序,能够通过tcp/ip连接远程X服务器,数据没有加密,但是它通过ssh连
    接隧道安全进行

    #remotehost主机上的gedit工具,将会显示在本机的X服务器上,传输的数据将通过ssh连接加密
    ssh -X user@remotehost gedit

    ssh服务器配置

    服务器端:sshd
    优化

    配置文件: /etc/ssh/sshd_config

    常用参数:

    Port 
    ListenAddress ip       #监听的地址
    LoginGraceTime 2m       #宽限期输入口令时
    PermitRootLogin yes       #是否允许root登录
    StrictModes yes   #检查.ssh/文件的所有者,权限等
    MaxAuthTries   6     #最大尝试次数
    MaxSessions 10 #同一个连接最大会话 一个链接一个会话就设置唯一
    PubkeyAuthentication yes  #是否支持基于key的验证
    PermitEmptyPasswords no     #是否允许空口令连接
    PasswordAuthentication yes      #用户名密码验证 
    GatewayPorts no               #网关  
    ClientAliveInterval 单位:秒     #测试客户端活跃
    ClientAliveCountMax 默认3       #次数
    UseDNS yes              #反向解析提速改为no    
    GSSAPIAuthentication yes #提高速度可改为no
    MaxStartups #未认证连接最大值,默认值10
    Banner /path/file       #用户登录提示信息
    #以下可以限制可登录用户的办法:
    AllowUsers user1 user2 user3 #可以连接
    DenyUsers       #拒绝
    AllowGroups
    DenyGroups

    port 默认端口22 容易受攻击改为其他

    [root@centos7|~]#vim /etc/ssh/sshd_config 
     #Port 22
    #AddressFamily any
    #ListenAddress 0.0.0.0
    #ListenAddress :

    范例:设置ssh 空闲60s 自动注销

    vim /etc/ssh/sshd_config
    ClientAliveInterval     60
    ClientAliveCountMax   0
    Service sshd restart
    #注意:新开一个连接才有效

    范例:解决ssh登录缓慢的问题

    vim /etc/ssh/sshd_config
    UseDNS no
    GSSAPIAuthentication no
    systemctl restart sshd #重启ssh服务

    范例:在 ubuntu 上启用root 远程ssh登录

    #修改sshd服务配置文件
    vim /etc/ssh/sshd_config 
    #PermitRootLogin prohibit-password 注释掉此行
    PermitRootLogin yes #修改为下面形式(是否允许root登录)
    systemctl restart sshd

    ssh服务的最佳实践

    • 建议使用非默认端口 22
    • 禁止使用protocol version 1 早期
    • 限制可登录用户
    • 设定空闲会话超时时长 60
    • 利用防火墙设置ssh访问策略
    • 仅监听特定的IP地址
    • 基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
    • 使用基于密钥的认证
    • 禁止使用空密码
    • 禁止root用户直接登录 ubuntu
    • 限制ssh的访问频度和并发在线数
    • 经常分析日志

    ssh其他相关工具

    挂载远程ssh目录sshfs

    由EPEL源提供,目前CentOS8 还没有提供,可以利用ssh协议挂载远程目录

    [root@centos7 ~]#yum install fuse-sshfs
    [root@centos7 ~]#sshfs 10.0.0.8:/data /mnt #将远程主机目录挂载到当前主机
    [root@centos7 ~]#df /mnt
    Filesystem     1K-blocks   Used Available Use% Mounted on
    10.0.0.8:/data  52403200 398576  52004624   1% /mnt

    自动登录ssh工具sshpass

    ssh登陆不能在命令行中指定密码。sshpass的出现,解决了这一问题。sshpass用于非交互SSH的密码验证,一般用在sh脚本中,无须再次输入密码(本机known_hosts文件中有的主机才能生效)。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。
    格式:

    sshpass [option] command parameters

    常见选项

    -p password #后跟密码它允许你用 -p 参数指定明文密码,然后直接登录远程服务器
    -f filename #后跟保存密码的文件名,密码是文件内容的第一行。
    -e #将环境变量SSHPASS作为密码

    范例:

    事先必须把对方的公钥下载(不是第一次登录)
    [root@centos8 ~]# sshpass -p 123456 -o StrictHostKeyChecking=no ssh 
    root@10.0.0.8
    [root@centos8 ~]# cat pass.txt
    123456
    [root@centos8 ~]# sshpass -f pass.txt ssh root@10.0.0.8
    [root@centos8 ~]# export SSHPASS=123456
    [root@centos8 ~]# sshpass -e ssh root@10.0.0.8

    修改/etc/ssh/ssh_config 首次连接不用输入(yes/no) StrictHostKeyChecking no

    范例:批量修改多台主机的root密码为随机密码

    cat change_root_password.sh
    #!/bin/bash
    rpm -q sshpass &> /dev/null || yum -y install sshpass
    export SSHPASS=123456
    NET=10.0.0
    for i in {1..254};do
       {
     PASS=`openssl rand -base64 9 |head -c 8`
     sshpass -e ssh -o stritHostKeyChecking=no $NET.$i "echo $PASS|passwd --stdin root &> /dev/null"
     echo $NET.$i:$PASS >> host.txt
     }& #后台执行
    done
    wait

    直接创建用户
    sshpass -e ssh root@10.0.0.8 useradd tom
    -o stritHostKeyChecking=no 10.0.0.6 #不用输入yes

    范例:批量部署多台主机基于key验证

    #!/bin/bash
    #-t 使用rsa算法 -P设置空口令 -f 指定生成文件的位置
    ssh-keygen  -t rsa -P ""  -f /root/.ssh/id_rsa &> /dev/null
    rpm -q sshpass &> /dev/null || yum -y install sshpass &> /dev/null
    while read LINE;do
    {
    PASS=`echo $LINE |awk -F:'{print $2}'`
    IP=`echo $LINE |awk -F:'{print $1}'`
    #-i 指定目标路径
    sshpass -p "$PASS" ssh-copy-id -o  StrictHostKeyChecking=no -i /root/.ssh/id_rsa.pub $IP 
    }&
    done < /data/host_pass.txt
    wait

    轻量级自动化运维工具pssh

    EPEL源中提供了多个自动化运维工具

    • pssh:基于python编写,可在多台服务器上执行命令的工具,也可实现文件复制,提供了基于
      ssh和scp的多个并行工具,项目:http://code.google.com/p/parallel-ssh/
    • pdsh:Parallel remote shell program,是一个多线程远程shell客户端,可以并行执行多个远程
      主机上的命令。 可使用几种不同的远程shell服务,包括rsh,Kerberos IV和ssh,项目: https://
      pdsh.googlecode.com/
    • mussh:Multihost SSH wrapper,是一个shell脚本,允许使用命令在多个主机上通过ssh执行命
      令。 可使用ssh-agent和RSA/DSA密钥,以减少输入密码,项目:http://www.sourceforge.net/p
      rojects/mussh

    pssh 命令选项如下:

    -H:主机字符串,内容格式”[user@]host[:port]” 
    -h file:主机列表文件,内容格式”[user@]host[:port]” 
    -A:手动输入密码模式
    -i:每个服务器内部处理信息输出
    -l:登录使用的用户名
    -p:并发的线程数【可选】
    -o:输出的文件目录【可选】
    -e:错误输出文件【可选】
    -t:TIMEOUT 超时时间设置,0无限制【可选】
    -O:SSH的选项
    -P:打印出服务器返回信息
    -v:详细模式
    --version:查看版本

    范例:

    #当不支持ssh的key认证时,通过 -A选项,使用密码认证批量执行指令
    pssh - H "192.168.1.10"   -A   hostname
    #输出信息
    pssh -H wang@192.168.1.10  -A -i hostname   
    #通过pssh批量关闭seLinux
    pssh -H root@192.168.1.10  -i ‘sed -i "s/^SELINUX=.*/SELINUX=disabled/" 
    /etc/selinux/config’  
    #多台主机
    pssh -H "192.168.1.10 192.168.1.20"  -i   hostname
                         
    #多台主机
    pssh -h hosts.txt  -i   hostname 
    #将标准错误和标准正确重定向都保存至本地主机的/app目录下
    pssh -H 192.168.1.10 -o /app -e /app   -i “hostname”
    #变量需要加单引号引起来
    [root@centos7 ~]#cat hosts.txt 
    10.0.0.8
    10.0.0.6
    [root@centos7 ~]#pssh -h hosts.txt -i echo $HOSTNAME
    [1] 16:47:00 [SUCCESS] 10.0.0.6
    centos7.wangxiaochun.com
    [2] 16:47:01 [SUCCESS] 10.0.0.8
    centos7.wangxiaochun.com
    [root@centos7 ~]#pssh -h hosts.txt -i 'echo $HOSTNAME'
    [1] 16:48:05 [SUCCESS] 10.0.0.6
    centos6.localdomain
    [2] 16:48:05 [SUCCESS] 10.0.0.8
    centos8.localdomain
    #*需要用双或单引号引起来
    [root@centos7 ~]#pssh -h hosts.txt -i ls /data/*
    [1] 16:48:29 [FAILURE] 10.0.0.6 Exited with error code 2
    Stderr: ls: cannot access /data/10.0.0.6: No such file or directory
    ls: cannot access /data/10.0.0.8: No such file or directory
    [2] 16:48:29 [FAILURE] 10.0.0.8 Exited with error code 2
    Stderr: ls: cannot access '/data/10.0.0.6': No such file or directory
    ls: cannot access '/data/10.0.0.8': No such file or directory
    [root@centos7 ~]#pssh -h hosts.txt -i 'ls /data/*'
    [1] 16:48:47 [SUCCESS] 10.0.0.6
    [2] 16:48:47 [SUCCESS] 10.0.0.8
    /data/centos7.log
    /data/f1.txt
    /data/f2.txt
    /data/host_pass.txt

    pscp.pssh命令

    pscp.pssh功能是将本地文件批量复制到远程主机

    pscp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o 
    outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] local remote

    pscp-pssh选项

    • -v 显示复制过程
    • -r 递归复制目录
      范例:
    #将本地curl.sh 复制到/app/目录
    pscp.pssh -H 192.168.1.10 /root/test/curl.sh   /app/   
    pscp.pssh -h host.txt /root/test/curl.sh   /app/ 
    #将本地多个文件批量复制到/app/目录
    pscp.pssh -H 192.168.1.10 /root/f1.sh /root/f2.sh   /app/
    #将本地目录批量复制到/app/目录
    pscp.pssh -H 192.168.1.10  -r /root/test/   /app/

    pslurp命令

    pslurp功能是将远程主机的文件批量复制到本地

    pslurp [-vAr] [-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par][-o 
    outdir] [-e errdir] [-t timeout] [-O options] [-x args] [-X arg] [-L localdir] 
    remote local(本地名)

    pslurp选项

    • -L 指定从远程主机下载到本机的存储的目录,local是下载到本地后的名称
    • -r 递归复制目录
      范例:
    #批量下载目标服务器的passwd文件至/app下,并更名为user
    pslurp -H 192.168.1.10 -L /app /etc/passwd user

    dropbear

    由Matt Johnston所开发的Secure Shell软件。Dropbear是一个相对较小的SSH服务器和客户端。它运行在一个基于POSIX的各种平台。 Dropbear是开源软件,在麻省理工学院式的许可证。 Dropbear是特别有用的“嵌入”式的Linux(或其他Unix)系统,如无线路由器,期望在存储器与运算能力有限的情况下取代OpenSSH,尤其是嵌入式系统
    官网:http://matt.ucc.asn.au/dropbear/dropbear.html
    范例:编译安装dropbear

    源码编译安装:
    1、安装相关包:yum install gcc
    2、下载dropbear-2019.78.tar.bz2
    3、tar xf dropbear-2019.78.tar.bz2
    4、less INSTALL README
    5、./configure --prefix=/apps/dropbear --sysconfdir=/etc/dropbear
    6、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
    7、make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
    #启动ssh服务:
    8、echo 'PATH=/apps/dropbear/sbin:/apps/dropbear/bin:$PATH' > 
    /etc/profile.d/dropbear.sh
    9、/apps/dropbear/sbin  -h
    10、mkdir /etc/dropbear
    11、dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key -s 2048
    12、dropbearkey -t dss -f /etc/dropbear/dropbear_dsa_host_key 
    13、dropbear -p :2222 -F –E   #前台运行,相当于sshd
     dropbear -p :2222 #后台运行
    客户端访问:
    14、ssh -p 2222 root@127.0.0.1
    15、dbclient -p 2222 root@127.0.0.1  #相当于ssh

    文件完整性检查AIDE(监控)

    安装 AIDE yum install aide
    配置文件指定对哪些文件进行检测 vim /etc/aide.conf

    # Some files get updated automatically, so the inode/ctime/mtime change
    # but we want to know when the data inside them changes.
    DATAONLY =  p+n+u+g+s+acl+selinux+xattrs+sha256
    TEST = p+u+g+s+sha512
    # Next decide what directories/files you want in the database. Aide
    # uses a first match system. Put file specific instructions before generic
    # matches. e.g. Put file matches before directories.
    /data    TEST
    !/data/f2.txt #不监控
    /boot/   CONTENT_EX
    /bin/    CONTENT_EX
    /sbin/   CONTENT_EX
    /lib/    CONTENT_EX
    /lib64/  CONTENT_EX
    /opt/    CONTENT

    配置范例: vim/etc/aide.conf

    #定义监控项权限+索引节点+链接数+用户+组+大小+最后一次修改时间+创建时间+md5校验值
    R=p+i+n+u+g+s+m+c+md5  #自己定义的属性
    NORMAL = R+rmd60+sha256
    /data/test.txt R		#使用这个属性
    /bin/ps R+a
    /usr/bin/crontab R+a
    /etc   PERMS
    !/etc/mtab   #“!”表示忽略这个文件的检查

    初始化默认的AIDE的库:

    /usr/local/bin/aide -i | --init
    

    生成检查数据库(建议初始数据库存放到安全的地方)

    cd /var/lib/aide
    mv aide.db.new.gz aide.db.gz
    

    检测

    /usr/local/bin/aide -C | --check
    

    更新数据库 和新的AIDE数据库进行比较

    aide -u | --update
    
    展开全文
  • Ubuntu开启ssh服务

    2020-06-01 21:02:52
    关键指令 (切换root用户执行) ps -e | grep ssh(查看ssh服务是否开启) apt-get install openssh-client(安装ssh客户端程序) ...service ssh stop 或者 /etc/init.d/ssh stop(关闭ssh服务) 运行ps -e | gr

    关键指令 (切换root用户执行)

    ps -e | grep ssh(查看ssh服务是否开启)

    apt-get install openssh-client(安装ssh客户端程序)

    apt-get install openssh-server(安装ssh服务端程序)

    service ssh start 或者 /etc/init.d/ssh start(开启ssh服务)

    service ssh stop 或者 /etc/init.d/ssh stop(关闭ssh服务)

    查看ssh服务是否开启

    运行ps -e | grep ssh得出如图的两行结果。

    ssh-agent指的是ubuntu的ssh服务的客户端,用于该ubuntu远程连接其它Linux主机。

    sshd指的是ubuntu的ssh服务的服务端,用于其它主机通过ssh服务连接该主机。

     

    修改ssh默认端口


    ssh-server配置文件位于/ etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。然后重启SSH服务:
    /etc/init.d/ssh restart

     

    加快ssh登录时间

    vi /etc/ssh/sshd_config
    找到 GSSAPI options 这一节,将下面两行注释掉:
    #GSSAPIAuthentication yes
    #GSSAPIDelegateCredentials no
    然后重新启动 ssh 服务即可:
    /etc/init.d/ssh restart

     

     

    展开全文
  • Linux开启ssh服务

    2017-07-12 10:53:23
    一、Centos7开启ssh服务 1.yum install openssh-server安装。 2.service sshd start status查看ssh服务状态。 3.service sshd start...4.systemctl start sshd也可开启ssh服务/systemctl stop sshd关闭ssh服务...

    一、Centos7开启ssh服务

    1.yum install openssh-server安装。

    2.service sshd start status查看ssh服务状态。

    3.service sshd start开启ssh服务/service sshd stop关闭服务。

    4.systemctl start sshd也可开启ssh服务/systemctl stop sshd关闭ssh服务。

    5.systemctl enable sshd设置ssh服务自启动。

    二、kali/ubuntu开启ssh服务

    1.apt-get install openssh-server

    2.service ssh start开启ssh服务/service ssh stop关闭服务。

    3.service ssh status查看ssh服务状态。

    4.ssh服务随电脑自动启动:update-rc.d ssh enable。

    5.关闭自启动:update-rc.d ssh disenable。

     

     

     

     

     

     

    展开全文
  • Ubuntu 20.04 开启SSH服务

    千次阅读 2020-11-19 13:56:03
    更新软件下载源 sudo apt-get update 安装ssh服务 sudo apt-get install openssh-server ...关闭ssh服务 systemctl stop ssh 开启ssh服务 systemctl start ssh 重启ssh服务 systemctl restart
  • Ubuntu 安装配置SSH服务

    2019-12-04 15:53:12
    1、安装SSH服务 $ apt update $ apt install openssh-server 2、启动 $ /etc/init.d/ssh start ...注:重启命令与关闭命令如下: ...$ /etc/init.d/ssh stop #关闭SSH服务 3、查看进程,检查是否启动成功,...
  • 安装ssh服务

    2012-12-05 11:41:26
    安装ssh服务: #sudo apt-get install openssh-server 启动ssh服务: ...关闭ssh服务: #sudo service ssh stop 安装putty登陆: #sudo apt-get install openssh-server 打开putty: #pu
  • 开启、关闭、查看SSH服务

    万次阅读 2019-04-18 13:27:45
    一、临时启用SSH服务 1、通过SSH服务器的启动脚本文件启动SSH服务 通过OpenSSH服务器的脚本文件“/etc/rc.d/init.d/sshd”启动SSH服务,命令执行如下。 /etc/rc.d/init.d/sshd start 命令执行后, SSH服务...
  • MacOS开启SSH服务

    2021-01-05 09:27:25
    MacOS开启SSH服务 查看ssh服务状态 sudo systemsetup -getremotelogin ...如果已经开启的话,指令会显示 “Remote Login: On” ,反之就会显示...关闭ssh服务: sudo systemsetup -setremotelogin of ...
  • ubuntu安装ssh服务

    千次阅读 2019-03-06 14:16:52
    sudo apt-get install openssh-server sudo apt-get install openssh-client 查看本机ip ifconfig 确认ssh是否安装成功 ...启动与关闭ssh服务 sudo service ssh start #启动ssh sudo service ss...
  • ubuntu开启SSH服务方法

    2020-03-23 20:48:26
    开启linux ssh服务方法 步骤如下 1.分别安装ssh客户端程序和ssh服务端程序 命令如下: sudo apt-get install openssh-client (安装ssh客户端程序) ...2.开启ssh服务指令 service ssh start(关闭ssh服务指令 service ...
  • Ubuntu16.04 开启SSH服务

    2020-05-14 15:17:48
    1. 查询SSH服务是否已开启 sudo ps -e | grep ssh 有以下返回说明已开启;没结果说明没安装SSH服务 2. 安装SSH服务 ...关闭SSH服务: sudo service ssh stop 重启SSH服务: sudo servi...
  • SSH服务

    千次阅读 2013-05-29 13:59:04
    最近刚刚接手的项目上面使用的是SSH协议访问远程主机,所以要研究下...Working Group所制定的一族协议,其目的是要在非安全网络上提供安全的远程登录和其他安全网络服务。可以简单理解为:Rlogin和Telnet等的替代方案。
  • Linux SSH 服务开启关闭操作

    千次阅读 2020-07-16 23:12:40
    开启linux ssh服务 ...关闭linux ssh服务 service sshd stop 查看ssh服务是否开启 ps -e | grep ssh 若有 sshd 服务显示,说明已成功开启 ♥ 喜 欢 请 点 赞 哟 ♥ (●ˇ∀ˇ●)
  • Linux关闭ssh1服务

    千次阅读 2018-05-29 09:51:21
    安全的同事通过nusses扫描发现一台服务器有ssh1漏洞:tcp/22:10882 - SSH Protocol ...平时由于没用的ssh1,决定将其关闭。ip:172.168.9.54os:suse10 sp31.修改配置文件#view/etc/ssh/sshd_config Protocol2Protoc...
  • Linux SSH服务管理与防火墙服务管理

    千次阅读 2012-04-20 15:39:45
    关闭ssh服务: service sshd stop 重启ssh服务: servcie sshd restart SSH服务开机自动启动: chkconfig sshd on 取消开机自启动: chkconfig sshd off 开启服务后,检查服务状态: ...
  • 安卓开启ssh服务

    千次阅读 2020-10-19 17:58:06
    手机安装Termux软件(命令行终端) # 1. 安装openssh pkg install openssh # 2. 获取本机用户名 第一项uid=.......id # 3....# 4. 开启ssh服务,默认端口8022 ...# 5....# 关闭ssh服务 pkill sshd 电脑XShell登录: # ss
  • Ubuntu 开启ssh服务

    2019-12-09 12:49:01
    ps -e | grep ssh(查看ssh服务是否开启) apt-get install openssh-client(安装ssh客户端程序) apt-get install openssh-server(安装ssh服务端程序) service ssh start 或者 /etc/init.d/ssh start(开启ssh...
  • Kali配置ssh服务

    2017-11-27 16:44:25
    启用ssh服务/etc/init.d/ssh start查看ssh服务状态/etc/init.d/ssh status系统自启ssh服务update-rc.d ssh enable关闭自启ssh服务update-rc.d ssh disabled默认不允许root登陆,可以通过修改/etc/ssh/sshd_config...
  • 安装ssh工具 .../etc/init.d/ssh stop #关闭SSH服务 2.查看进程,检查是否启动成功,键入如下命令: ps -e | grep sshd 有了进程才能进行SSH服务的使用。 配置root用户SSH服务 Ubuntu中SSH服务安装完成后查
  • Solaris10本身就自带sftp客户端及sftp服务端,其中,sftp服务端是使用sshd来实现SSH文件传输协议的。缺省情况下,Solaris10的ssh...缺省ssh服务是开启的,如果要禁止ssh服务,可以使用"svcadmdisablesvc:/network/...
  • 如果缺少sshd,说明ssh服务 没有启动 或者 没有安装 安装命令为: 安装ssh-client命令:apt-get install openssh-client 安装ssh-server命令:apt-get install openssh-server 启动命令为: 启动命令:service ...
  • Kali Linux 开启 SSH 服务

    2020-11-23 08:03:02
    0x01 Kali Linux 开启SSH服务 查看 ssh 服务状态 /etc/init.d/ssh status 可以看到当前 ssh 服务为关闭状态 2. 修改配置文件 vim /etc/ssh/sshd_config #PermitRootLogin prohibit-password PermitRootLogin ...
  • 安装ssh工具 1.打开终端键入如下命令: apt-get update apt-get install openssh-server 2.选择Y继续执行 启动SSH服务 1.键入如下命令: .../etc/init.d/ssh stop #关闭SSH服务 或者 service ssh stop 2.查
  • solaris如何启动ssh服务

    2014-05-07 18:04:00
    先查看一下ssh服务状态:# svcs或# svcs | grep sshonline Aug_07 svc:/network/ssh:default 如需要关闭ssh服务(关闭完可以 svcs | grep ssh 查看一下状态):# svcadm disable svc:/network/ssh:default# svcs | ...
  • Solaris-开启SSH服务

    2011-04-13 21:02:37
    默认ssh服务是启动的,但不允许root访问,需要修改/etc/ssh/sshd_config文件,将 permitrootlogin no 改为 yes ...svcadm disable network/ssh 关闭ssh服务 svcadm restart network/ssh 重启ssh服务 sv...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 123,357
精华内容 49,342
关键字:

如何关闭ssh服务