欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

相关命令

程序员文章站 2022-04-04 18:49:55
gpg openssl ssh scp rsync sftp Pssh、pslurp、pscp.pssh工具 ......

gpg

    gpg---OpenPGP encryption and signing tool
        gpg [options] [files]
            -c, --symmetric     仅使用对称加密
            -e, --encrypt   加密数据
            -d, --decrypt   解密数据
            -s, --sign      制作签名
            --clearsign     制作一个清晰文本签名 
            --verify            检查签名
            -o, --output FILE       写出到文件
            --gen-key       生成一个新的密钥对
            -k, --list-keys     列出密钥
            --export    导出密钥
            --import    导入或合并密钥
            -a, --armor     create ascii armored()output
            -r, --recipient USER-ID     为用户id加密
            --delete-keys   移除公钥
            --delete-secret-keys    移除私钥
    来自包:
        rpm  -q --whatprovides gpg
            gnupg2-2.0.14-8.el6.x86_64
    包内文件:
        rpm -ql gnupg2
    示例:
        1.对称加密file 文件
            在A主机上加密file
                gpg -c file
                ls file.gpg
            在B主机上解密file
                gpg -o file -d file.gpg
        2.非对称(公钥)加密file文件
            在hostB 主机上用公钥加密,在hostA 主机上解密。
            在hostA 主机上生成公钥/私钥对
                gpg --gen-key
            在hostA 主机上查看公钥
                gpg --list-keys
            在hostA 主机上导出公钥到wang.pubkey
                gpg -a --export -o wang.pubkey
            从hostA 主机上复制公钥文件到需加密的B 主机上
                scp wang.pubkey hostB:
            在需加密数据的hostB 主机上生成公钥/私钥对
                gpg --gen-key
            在hostB 主机上导入公钥
                gpg --import wang.pubkey
                gpg --list-keys
            用从hostA 主机导入的公钥,加密hostB 主机的文件file, 生成file.gpg
                gpg -e -r wangxiaochun file
                file file.gpg
            复制加密文件到hostA 主机
                scp fstab.gpg hostA:
            在hostA 主机解密文件
                gpg -d file.gpg
                gpg -o file -d file.gpg
            删除公钥和私钥
                gpg --delete-keys wangxiaochun
                gpg --delete-secret-keys wangxiaochun
            

openssl

    openssl - OpenSSL command line tool(openssl命令行工具)
        openssl     command [ command_opts ] [ command_args ]
        openssl     [ list-standard-commands | list-message-digest-commands | list-cipher-commands | list-cipher-algorithms | list-message-digest-algorithms | list-public-key-algorithms]
        openssl     no-XXX [ arbitrary options ]:判断XXX命是否存在
        openssl ?打开command列表
    1)openssl  enc命令
        对称加密
        帮助:man enc
        enc - symmetric(对称的)cipher(密码)routine(程序)
            对称密码命令支持数据使用各种块(填充物)加密或解密。
            openssl  enc     -ciphername 
                [-in filename]:导入文件
                [-out filename]:导出文件
                [-pass arg]:传递密码源
                [-e]:加密
                [-d]:解密
                [-a/-base64]:基于base64的加密
                [-A]:有-a时,base64在一行上处理数据
                [-k  password]:密码源于key
                [-kfile filename] 
                [-K/-iv key/IV]:key/lv 采用十六进制,是下个密码
                [-S salt]:采用十六进制的salt,是下个密码
                [-salt]:使用salt(随机)
                [-nosalt]:不使用salt
                [-z]:在加密或解密前进行压缩或解压缩文本
                [-md]:用于从密码上创建key
                [-p]:打印使用的key和IV
                [-P]:打印使用的key和IV,且马上退出而不进行加密或解密
                [-bufsize number]:为I/O设置buffer 尺寸
        
        加密:
            openssl enc -e -des3 -a -salt -in testfile  -out testfile.cipher
        解密:
            openssl enc -d -des3 -a -salt -in testfile.cipher -out testfile
            
    2)openssl dgst
        单向加密
        帮助:man dgst
        dgst, md5, md4, md2, sha1, sha, mdc2, ripemd160 - message digests(信息摘要)(hash(data)=digest 摘要)
            digist的功能是输出所支持文件或十六进制形式文件的摘要信息,同样可用于数字签名和核查
            openssl dgst    [-md5|-md4|-md2|-sha1|-sha|-mdc2|-ripemd160|-dss1]: [file...]
                [-c]:输出以冒号为分割符的两位数
                [-d]:打印BIO的调试信息
                [-hex]:采用16进制输出(默认输出)
                [-binary]:采用二进制输出
                [-out filename]:输出到文件或标准输出
                [-sign filename]:在文件中使用私钥来签名
                [-keyform arg]:指定key形式来签名
                [-passin arg]:私钥源
                [-verify filename]:使用文件中公钥核查签名
                [-prverify filename]:使用文件中的私钥来核查签名
                [-signature filename]:核查实际的签名
                [-hmac key]:使用key来创建hashed MAC
        
        
        openssl dgst -md5 [-hex 默认] /PATH/SOMEFILE
        openssl dgst -md5 testfile
        md5sum /PATH/TO/SOMEFIL
        
    3)openssl passwd
        生成密码 
        帮助:man sslpasswd
            passwd - compute password hashes(计算密码散列)
                用于计算工作状态下输入密码的散列或是列表的中密码的散列
            openssl passwd  [-crypt]:标准的Unix密码算法(默认)    [password]
                [-1]:基于MD5的密码算法
                [-apr1]:基于md5的密码算法,Apache不同
                [-salt string]:使用所提供的salt
                [-in file]:从文件中读取密码
                [-stdin]:从标准输入中读取密码
                [-noverify]:从终端读取密码时不进行检查
                [-quiet]:不要警告
                [-table]:表格格式输出
                [--reverse]:转换表列
                   
            openssl passwd -1 -salt SALT( 最多8 位)
            openssl passwd -1 –salt centos
        
        4)openssl rand
            生成随机数
            帮助:man sslrand
            rand - generate pseudo-random bytes(生成伪随机码)
                rand命令一旦种植了随机数生成器后就输出虚随机码位的数字
                openssl rand    [-out file]:写到文件    num
                    [-rand file(s)]:从文件中播种下PRNG
                    [-base64]:base64编码输出
                    [-hex]:十六进制编码输出
            
            openssl rand -base64|-hex NUM
                NUM:表示字节数;-hex时,每个字符为十六进制,相当于4 位二进制,出现的字符数为NUM*2
            
        5)openssl rsautl
            公钥加密(非对称加密)
            帮助:man rsautl
            rsautl - RSA utility(RSA功用)
                rsautl 命令使用RSA算法用于签名,检测,加密和解密数据。
                openssl rsautl  [-in file]:输入文件
                    [-out file]:输出到文件
                    [-inkey file]:输入key
                    [-pubin]:输入是个RSA 公钥
                    [-certin]:输入是个含有RSA公钥的证书
                    [-sign]:签名输入数据,输出签名结果,要求有RSA私钥
                    [-verify]:核查输入数据和输出的恢复数据
                    [-encrypt]:使用RSA公钥加密输入数据
                    [-decrypt]:使用RSA私钥加密输入数据
                    [-pkcs] [-ssl] [-raw]
                    [-hexdump]:十六进制输出
                    [-asn1parse]:
            
        
        6)openssl genrsa
            生成私钥
            帮助:man genrsa
            genrsa - generate an RSA private key(产生RSA私钥)
                genrsa 命令生成一个RSA私钥
                openssl genrsa  [-out filename]:输出到文件,若没指定则标准输出
                    [-passout arg]:输出文件密码源
                    [-des][-des3][-idea]:使用加密算法对产生的密钥进行加密
                    [-f4][-3]:使用公共说明,或65537或3,默认65537。
                    [-rand file(s)]:加载文件到随机数生成器中
                    [-engine id]:指定engine
                    [numbits]:指定私钥的bit位,默认位512,必须放到最后指定 
            
            示例:
                生成私钥
                openssl genrsa -out  /PATH/TO/PRIVATEKEY.FILE [numbits]
                chmod +600  privatekey.file
                or
                (umask 077(用于修改权限); openssl genrsa –out test.key –des 2048)(括号用进行子进程,使得umask只影响子进程)
                
            
        7)openssl rsa
            从私钥中提取
            帮助:man rsa
            rsa - RSA key processing tool(RSA密钥处理工具)
                rsa命令处理RSA密钥,可使密钥在各种格式下转换并且进行内容输出
                openssl rsa     [-inform PEM|NET|DER]:输入形式
                    [-outform PEM|NET|DER]:输出形式
                    [-in filename]:输入文件
                    [-passin arg]:输入文件密码源
                    [-out filename]:输出文件
                    [-passout arg]:输出文件密码源
                    [-sgckey]:使用IIS SGC 密钥a.形式
                    [-des][-des3][-idea][-seed]:加密形式
                    [-text]:采用text打印密钥
                    [-noout]:不打印出密钥
                    [-modulus]:打印RSA密钥模数
                    [-check]:检查密钥一致性
                    [-pubin]:默认是从文件读取私钥,使用这个选项就是读取公钥
                    [-pubout]:默认是输出私钥,使用这个选项就输出公钥
                    [-engine id]:指定engine ID
            
            示例:
                从私钥中提取公钥
                    openssl rsa -in  private key file –pubout –out  publickey file
                    openssl rsa –in test.key –pubout –out test.key.pub
                openssl rsa -in key.pem -text -noout
                openssl rsa -in key.pem -outform DER -out keyout.der
                openssl rsa -in key.pem -des3 -out keyout.pem
                openssl rsa -in key.pem -out keyout.pem
        
        8)openssl req
            证书申请
            帮助:man req
            req - PKCS#10 certificate request and certificate generating utility.(证书请求和证书产生功用)
                自签名证书req命令主要是采用PKCS#10格式创建和处理证书请求。它可以为根CA创建自签名证书。
                openssl req     [-inform PEM|DER]:指定输入格式,默认为PEM格式
                    [-outform PEM|DER]:指定输出格式
                    [-in filename]:指定读取请求所需的文件。若未指定则使用标准输入
                    [-passin arg]:输入文件密码源
                    [-out filename]:证书输出到文件
                    [-passout arg]:输出文件密码源
                    [-text]:采用text格式打印出证书请求
                    [-pubkey]:输出公钥
                    [-noout]:阻止输出请求的加密译文
                    [-verify]:核查请求上的签名
                    [-modulus]:打印出包含在请求中的公钥模数值
                    [-new]:生成新证书签署请求
                    [-rand file(s)]:使用包含随机数的文件来产生随机数
                    [-newkey rsa:bits|alg:file]:创建一个新的证书请求和一个私钥
                    [-nodes]:
                    [-key filename]:生成请求是用到的私钥文件
                    [-keyform PEM|DER]:指定私钥文件的格式
                    [-keyout filename]:输出新创建的私钥到文件
                    [-keygen_engine id]:
                    [-[digest]]:指定签名请求时使用的message digest
                    [-config  filename]:指定可供选择的配置文件
                    [-subj arg]:
                    [-multivalue-rdn] 
                    [-x509]:专用于CA生成自签名证书
                    [-days n]:证书的有效期限,默认为30天
                    [-set_serial n]
                    [-asn1-kludge]
                    [-no-asn1-kludge]
                    [-newhdr]
                    [-extensions section]
                    [-reqexts section]
                    [-utf8]  
                    [-nameopt]
                    [-reqopt]
                    [-subject]
                    [-subj arg]
                    [-batch]:不使用交换模式
                    [-verbose]:输出详细操作信息
                    [-engine id]:
            
            示例:
                openssl req -new -x509 –key /etc/pki/CA/private/cakey.pem -days 7300 -out  /etc/pki/CA/cacert.pem
                openssl req -new -key /etc/pki/tls/private/test.key  -days 365 -out /etc/pki/tls/test.csr
                openssl req -new  -key  /etc/pki/CA/private/cakey.pem  -out  /etc/pki/tls/testsubca.csr
                openssl req -in req.pem -text -verify -noout
                openssl genrsa -out key.pem 1024
                openssl req -new -key key.pem -out req.pem
                openssl req -newkey rsa:1024 -keyout key.pem -out req.pem
                openssl req -x509 -newkey rsa:1024 -keyout key.pem -out req.pem
                
                
        9)openssl ca
            帮助:man ca
            ca - sample minimal CA application(CA应用)
                ca命令是个最低等级的CA应用,
                openssl ca  [-verbose]
                    [-config filename]
                    [-name section]
                    [-gencrl]:基于index文件中信息,产生一个CRL
                    [-revoke file]:撤回证书文件
                    [-crl_reason reason]
                    [-crl_hold instruction]
                    [-crl_compromise time]
                    [-crl_CA_compromise time]
                    [-crldays days]
                    [-crlhours hours]
                    [-crlexts section]
                    [-startdate date]
                    [-enddate date]
                    [-days arg]
                    [-md arg]
                    [-policy arg]
                    [-keyfile arg]
                    [-key arg]
                    [-passin arg]
                    [-cert file]
                    [-selfsign]
                    [-in file]:输入PEM编码证书请求
                    [-out file]:输出证书
                    [-notext]
                    [-outdir dir]
                    [-infiles]
                    [-spkac file]
                    [-ss_cert file]
                    [-preserveDN]
                    [-noemailDN]
                    [-batch]
                    [-msie_hack]
                    [-extensions section]
                    [-extfile section]
                    [-engine id]
                    [-subj arg]
                    [-utf8]
                    [-multivalue-rdn]
                    [status serial]:根据编号码显示证书状态
            
            示例:
                openssl ca -in req.pem -out newcert.pem
                openssl ca -in req.pem -extensions v3_ca -out newcert.pem
                openssl ca -gencrl -out crl.pem
                openssl ca -infiles req1.pem req2.pem req3.pem
                openssl ca -spkac spkac.txt
            
            文件:
                /usr/local/ssl/lib/openssl.cnf - master configuration file
                ./demoCA                       - main CA directory
                ./demoCA/cacert.pem            - CA certificate
                ./demoCA/private/cakey.pem     - CA private key
                ./demoCA/serial                - CA serial number file
                ./demoCA/serial.old            - CA serial number backup file
                ./demoCA/index.txt             - CA text database file
                ./demoCA/index.txt.old         - CA text database backup file
                ./demoCA/certs                 - certificate output file
                ./demoCA/.rnd                  - CA random seed information
        
        10)openssl crl
            帮助:man crl
            crl - CRL utility
                crl命令采用DER或者PEM格式处理CRL文件
                openssl crl     [-inform PEM|DER]
                    [-outform PEM|DER]
                    [-text]:以text格式打印输出CRL
                    [-in filename]
                    [-out filename]
                    [-noout]:不输出加密版的CRL
                    [-hash]
                    [-issuer]
                    [-lastupdate]
                    [-nextupdate]
                    [-CAfile file]
                    [-CApath dir] 
        
            示例:
                openssl crl -in crl.pem -outform DER -out crl.der
                openssl crl -in crl.der -text -noout

ssh

    ssh - OpenSSH SSH client (remote login program)
    ssh [user@]host [COMMAND]
        ssh     [-1246AaCfgKkMNnqsTtVvXxYy]     [user@]hostname [command]
            [-b bind_address] 
            [-c cipher_spec] 
            [-D  [bind_address:]port]
            [-e escape_char]
            [-F configfile]
            [-I pkcs11]
            [-i identity_file]
            [-L   [bind_address:]port:host:hostport] 
            [-l login_name]
            [-m mac_spec]
            [-O ctl_cmd]
            [-o option]
            [-p port]
            [-R  [bind_address:]port:host:hostport] 
            [-S ctl_path]
            [-W host:port]
            [-w local_tun[:remote_tun]
    
    ssh [-l user] [user@]host [COMMAND]
        -p port :远程服务器监听的端口
        -b: 指定连接的源IP
        -v: 调试模式
        -C:压缩方式
        -X: 支持x11 转发
        -Y:支持信任x11 转发
            ForwardX11Trusted yes
        -t: 强制伪tty 分配
            ssh -t remoteserver1 ssh remoteserver2

scp

    scp — secure copy (remote file copy program)
            scp     [-12346BCpqrv]  [[user@]host1:]file1 ... [[user@]host2:]file2
                [-c cipher]
                [-F ssh_config]
                [-i identity_file]
                [-l limit]
                [-o ssh_option]
                [-P port]
                [-S program]
        scp [options] SRC... DEST/
        scp [options] [user@]host : /sourcefile /destpath
        scp [options] /sourcefile [user@]host:/destpath
    
    常用选项:
        -C:     压缩数据流
        -r:     递归复制
        -p:     保持原文件的属性信息
        -q:     静默模式
        -P PORT:    指明remote host 的监听的端口

rsync

    基于ssh 和rsh 服务实现高效率的远程系统之间复制文件
    使用安全的shell 连接做为传输方式
    比scp 更快,只复制不同的文件
    rsync - a fast, versatile(通用的), remote and local   file-copying tool
        Local:  
            rsync [OPTION...] SRC... [DEST]
        Access via remote shell:
             Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]
             Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
        Access via rsync daemon:
             Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
                   rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
             Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
                   rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
        
        rsync –av /etc server1:/tmp  复制目录和目录下文件
        rsync –av /etc/ server1:/tmp  只复制目录下文件
    选项:
        -n      模拟复制过程
        -v      显示详细过程
        -r      递归复制目录树
        -p      保留权限
        -t      保留时间戳
        -g      保留组信息
        -o      保留所有者信息
        -l  将软链接文件本身进行复制(默认)
        -L      将软链接文件指向的文件复制
        -a      存档,相当于–rlptgoD ,但不保留ACL (-A )和SELinux 属性(-X)

sftp

    交互式文件传输工具
    用法和传统的ftp 工具相似
    利用ssh服务实现安全的文件上传和下载
    sftp — secure file transfer program
        sftp    [-1246aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher] [-D sftp_server_path] [-F ssh_config][-i identity_file] [-l limit] [-o ssh_option] [-P port] [-R num_requests] [-S program][-s subsystem | sftp_server] host
        sftp    [user@]host[:file ...]
        sftp    [user@]host[:dir[/]]
        sftp    -b batchfile [user@]host
    使用ls cd mkdir rmdir pwd get put 等指令, 可用?或help获取帮助信息
        sftp [user@]host
        sftp> help

Pssh、pslurp、pscp.pssh工具

    /usr/bin/pnuke
    /usr/bin/prsync
    /usr/bin/pscp.pssh
    /usr/bin/pslurp
    /usr/bin/pssh
    pssh — parallel ssh program
         pssh   [-I] [-vAiIP][-h hosts_file] [-H [user@]host[:port]] [-l user] [-p par] [-o outdir] [-e errdir] [-t timeout][-O options] [-x args] [-X arg] command ...
        pssh是一个python 编写可以在多台服务器上执行命令的工具,也可实现文件复制
        pssh [OPTIONS] command [...]
            --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   :  打印出服务器返回信息
        
    pslurp:复制远程文件到本地
        pslurp is a program for copying files in parallel from a number of hosts.
    pscp.pssh:复制本地文件到远程主机
        pscp.pssh is a program for copying files in parallel to a number of hosts
    prsync:复制本地文件到远程主机
        prsync is a program for copying files in parallel to a number of hosts.
    pnuke:远程关闭进程
        pnuke is a program for killing processes in parallel on a number of hosts
        pslurp [OPTIONS] remote local
            pslurp -h hosts.txt -L /tmp/outdir -l irb2  /home/irb2/foo.txt foo.txt
        pscp.pssh [OPTIONS] local remote
            pscp -h hosts.txt -l irb2 foo.txt /home/irb2/foo.txt
        prsync [OPTIONS] local remote
            prsync -r -h hosts.txt -l irb2 foo /home/irb2/foo
        pnuke [OPTIONS] pattern
            pnuke -h hosts.txt -l irb2 java