zoukankan      html  css  js  c++  java
  • Linux九阴真经之九阴白骨爪残卷2(SSH)

    SSH

    ssh:安全的远程登录

    两种方式的用户登录认证

    基于passwork

    基于key

    客户端

    常见的客户端工具有:Windows版的putty、securecrt、xshell;linux中有ssh、sftp、scp、slogin等

    配置文件: /etc/ssh/ssh_config

    ssh命令

    用法:ssh  username@host   CMD

    选项:

          -p   port :  远程服务器监听端口

          -b          :  指定连接的源IP

          -v          :  调试模式

          -C         :  压缩方式

          -X         : 支持x11转发

          -Y         :支持信任x11转发

          -t          :强制伪tty分配    例:  ssh  -t  remoteserver1  ssh  remoteserver2

    ssh 客户端

    当客户端第一次连接服务器时,服务器会发送自己的公钥给客户端,并保存在客户端的~./ssh/know_hosts中。下次连接时不会再询问。

    SSH服务登录验证

    基于密码登录验证

    由上图我们总结出如下步骤

    (1)客户单向服务器发起SSH请求,服务器会把自己的公钥发送给客户端

    (2)用户根据服务器发送的公钥,对密码进行加密

    (3)加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功

    基于秘钥的登录方式验证

    (1)首先在客户端生成一对密钥(ssh-keygen)

    (2)并将客户端的公钥拷贝(ssh-copy-id) 到服务器

    (3)当客户端再一次发送连接请求,包括IP,用户名

    (4)服务器得到客户端的请求后,会到authorized——keys中查找,如果有响应的IP和用户,   就会随机生成一个字符串,利如:acdf

    (5)服务器将使用客户端拷贝过来的公钥对字符串进行加密,然后发送给客户端

    (6)得到服务器发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端

    (7)服务器接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致就允许免密码登录

    基于key认证

    基于密钥的认证:

    (1)在客户端生成密钥对

    ssh-keygen  -t  rsa(指定加密方式)  -p''(指定空密码)  -f  "~/.ssh/id_rsa"

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

    ssh-copy-id  -i  ~/.ssh/id_rsa.pub  root@IPADDR

    (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

    例:配置基于密钥的免密登录

    1、在客户端A生成密钥对,按3次回车键

    [root@laobai ~/.ssh]#ssh-keygen

    2、把公钥传给客户端B对应的家目录,并重命名为 authorized_keys

    3、在客户端Bde ~/.ssh 的目录下检查是否有authorized_keys 文件

    4、在客户端A测试连接客户端B,发现无需输入密码,直接登录

    scp命令

    两种方式:

    scp [options]  [user@] host:/sourcefile    /destpath  : 将自己的文件上传至服务器

    scp [options]  、sourcefile  [user@]host:/ destpath:将服务器上的文件下载至本机

    常用选项

       -c:压缩数据流

       -r:递归复制

       -p:保持原文件的属性信息

       -q:静默模式

       -P PORT:指明remote  host 的监听的端口

      

      sftp

    基于ssh的交互式文件传输工具,用法与ftp工具相似

    用法:sftp  username@host

    常用指令:ls cd mkdir rmdir pwd get put

    rsync命令

    基于ssh和rsh服务实现高效率的远程系统之间复制文件,与scp的区别就是 rsync 只复制有更改的文件。

    rsync  -av  /etc/  192.168.1.10:/date    复制目录和目录下文件到另一台主机
    
    rsync  -av  /etc/ 192.168.1.10 :/date    只复制目录下的文件到另一台主机

    特点: 比scp 更快, 只复制不同的文件

    选项

       -n  模拟复制过程

       -v  显示详细过程

       -r   地柜复制目录树

       -p   保留权限

       -t    保留时间戳

       -g   保留组信息

       -o   保留所有者信息

       -l   将软链接文件本身进行复(默认)

       -L  将软链接文件指向的文件复制

       -a   存档,相当于-rlptgoD,但不保留ACL(-A) 和 SElinux属性(-X)

    passh工具

    pass是一个python编写可以在多台服务器上执行命令的工具,也可以实现文件复制

    选项

    --version:查看版本

    -h :主机文件列表,内容格式"[user@]host[:port]"

    -H:主机字符串,内容格式”[user@]host[:port]”


    -l:登录使用的用户名


    -p:并发的线程数【可选】


    -o:输出的文件目录【可选】


    -e:错误输入文件【可选】


    -t:TIMEOUT 超时时间设置,0无限制【可选】


    -O:SSH的选项


    -v:详细模式


    -A:手动输入密码模式


    -x:额外的命令行参数使用空白符号,引号,反斜线处理


    -X:额外的命令行参数,单个参数模式,同-x


    -i:每个服务器内部处理信息输出


    -P:打印出服务器返回信息

     示例

     通过pssh批量关闭seLinux
    pssh -H root@192.168.1.10 -i "sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config"

    批量发送指令
    pssh -H root@192.168.1.10 -i setenforce 0


    pssh -H xuewb@192.168.1.10 -i hostname


    当不支持ssh的key认证时,通过 -A选项,使用密码认证批量执行指令


    pssh -H xuewb@192.168.1.10 -A -i hostname


    将标准错误和标准正确重定向都保存至/app目录下


    pssh -H 192.168.1.10 -o /app -e /app -i "hostname"

    PSCP.PSSH命令

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

     -v 显示过程中保留常规属性

     -a 复制过程中保留常规属性

     -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/

  • 相关阅读:
    js根据年份获取某月份有几天
    java 时间转换去杠
    简单Maven Dos命令语句
    Maven命令参数
    Redis学习推荐
    Java中Redis缓存
    oracle新建登录用户sql语句
    ORacle修改表列长度
    jsp利用application统计在线人数的方法
    Oracle之分页查询
  • 原文地址:https://www.cnblogs.com/huxiaojun/p/9064122.html
Copyright © 2011-2022 走看看