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