

SSH: 安全外壳,协议,22 / tcp,安全远程登录;
使用SSH协议可以有效地防止远程管理期间的信息泄漏,并用于替换早期的不安全的telnet
特定的软件实现:
OpenSSH: ssh协议的开源实现. 默认情况下已安装CentOS
dropbear: 另一个开源实现
SSH协议版本:
v1: 基于CRC-32的MAC不安全;中间人
v2: 双方的主机协议选择一种安全的MAC方法
基于DH算法的密钥交换,基于RSA或DSA的身份认证
相关软件包:
openssh
openssh客户端
openssh服务器
工具:
基于C / S结构:
客户:
Linux: ssh,scp,sftp,slogin
Windows: xshell,putty,securecrt,sshsecureshellclient
服务器: sshd
客户端组件:
ssh,配置文件: / etc / ssh / ssh_config
主机模式
StrictHostKeyChecking否在首次登录时不显示检查提示
格式:
ssh [user @]主机[COMMAND]
ssh [-l用户]主机[命令]
-p端口远程服务器侦听端口
-b指定连接的源IP
-v调试模式
-C压缩方法
-X支持跨网络的x11转发和图形界面显示;例如: xclock
-Y支持信任x11转发
ForwardX11信任是
-t强制伪tty分配;堡垒机可用
ssh -t remoteserver1 ssh remoteserver2

基于密码:
只要知道您的帐号和密码,就可以登录到远程主机. 所有传输的数据都将被加密,但是不能保证您要连接的服务器就是您要连接的服务器. 可能还有其他服务器假装为真实服务器,也就是受到“中间人”的攻击. </ p>
一般流程:
1. 客户端发起ssh请求,服务器将其自己的公钥发送给用户
2. 用户将根据服务器发送的公钥对密码进行加密
3. 加密的信息将发送回服务器. 服务器使用自己的私钥对其进行解密. 如果密码正确,则用户登录成功
基于密钥:
您需要依赖密钥,也就是说,您必须为自己创建一对密钥,并将公用密钥放在需要访问的服务器上. 如果要连接到SSH服务器,则客户端软件将向服务器发送请求,请求将您的密钥用于安全性验证. 服务器收到请求后,它将首先出现在服务中
在设备的主目录中找到您的公钥,并将其与您发送的公钥进行比较. 如果两个密钥匹配,则服务器使用公共密钥加密“挑战”ssh协议密钥认证登录,并将其发送到客户端软件. 客户端软件收到“问题”后,您可以使用您的
解密私钥并将其发送到服务器.
一般流程:
1. 首先在客户端上生成一对密钥
2. 将客户端的公钥ssh-copy-id复制到服务器上
3. 当客户端再次发送连接请求时,包括ip,用户名
4. 收到客户的请求后,服务器将转到authorized_keys进行查找. 如果存在响应的IP和用户,服务器将发出“挑战”(challenge),该挑战以一串随机字符的形式出现,例如: acdf.
5. 服务器将使用从客户端复制的公钥对“问题”进行加密,然后将其发送给客户端
6. 客户端收到服务器的“问题”后,将使用私钥进行解密,然后将解密后的字符串发送给服务器
7. 服务器收到客户端发送的字符串后,会将其与前一个字符串进行比较,如果相同,则允许无密码登录
两种登录身份验证的比较:
基于密钥的身份验证,用户必须指定自己的密钥的密码. 但是,与第一级相比,第二级不需要在网络上传输密码.
第二级不仅加密所有传输的数据,而且“中间人”攻击方法也是不可能的(因为他没有您的私钥). 但是整个登录过程将比基于passwd的身份验证稍长,这可能需要10秒钟
相关文件:
〜/ .ssh / authorized_keys存储被授权基于密钥登录的主机的公共密钥
〜/ .ssh / know_hosts存储通过SSH连接到计算机的主机的公共密钥
操作: 加快对ssh服务的访问
/ etc / ssh / sshd_config文件
GSSAPIAuthentication是->否关闭api身份验证
#UseDNS是|否–> UseDNS否删除注释并启用DNS
重新启动sshd服务
CentOS6:
服务sshd重新启动
CentOS7:
systemctl重新启动sshd
首先,在客户端上生成一对密钥:
ssh-keygen -t rsa
交互式输入:

默认路径
输入密码
第二,将公钥发送到服务器:
ssh-copy-id wang@192.168.30.7
重新连接:
ssh wang@192.168.30.7不提示输入密码
ssh wang@192.168.30.7'id'远程执行命令
使用基于密钥的登录功能而无需输入密码,我们可以分批执行一些任务:
首先将需要执行任务的服务器IP放入文件中
:
cat ip.txt
192.168.30.7
192.168.30.12
192.168.30.17
......
编写脚本以显示主机名:
vim主机名.sh
主机名
chmod + x hostname.sh
执行命令:
批量转移脚本
对于`cat ip.txt`中的ip;执行scp -p f1.sh $ ip: / data /;完成

批处理脚本以显示主机名
对于`cat ip.txt`中的ip;执行ssh $ ip“ /data/f1.sh”;完成

可以与期望结合使用以实现批处理密钥登录方法
思考: 多台机器共享一组密钥
一个,在机器A上生成一对密钥,然后自己执行ssh-copy-id命令
ssh-keygen
ssh-copy-id A
第二,将本地.ssh目录发送到所有其他计算机
scp -rp /root/.ssh B: / root /
scp -rp /root/.ssh C: / root /

您可以在多台计算机之间实现基于密钥的登录

当然ssh协议密钥认证登录,如果我们认为加密私钥并不安全,我们也可以重新加密私钥
重置私钥密码:
ssh-keygen -p
加密私钥后,每个连接都需要私钥密码. 我们可以使用代理托管来保存密码输入链接:
注意: 代理托管在重新启动后无效,需要重置
启用代理托管密码
ssh-agent bash
ssh-add
首先,准备一个IP列表
首先将需要执行任务的服务器IP放入文件中
:
cat ip.txt
192.168.30.x
192.168.30.xx
192.168.30.xxx
......
第二,编写脚本以将公钥推送到其他100台计算机
#!/ bin / bash
#安装期望软件包
rpm -q期望&> / dev / null ||百胜安装期望-y
#生成一对密钥,如果需要加密密钥,则可以在-P之后输入密码
ssh-keygen -P“” -f“ /root/.ssh/id_rsa”
#Server登录密码
password = centos
在阅读ipaddr时;做
期待<< EOF
设置超时10
spawn ssh-copy-id $ ipaddr
期望{
“是/否” {发送“是\ n”; exp_continue}
“密码” {发送“ $ password \ n”}
}
期待eof
EOF
完成 三,运行脚本并将公钥推送到其他100台计算机上 四,基于密钥验证实现无密码登录 注意: 默认情况下,系统未安装pssh工具,您需要使用epel源进行安装,要使用pssh,必须首先基于服务器到客户端建立 可以正常使用密钥验证 pssh是python编写工具,可以在多个服务器上执行命令,还可以复制文件 选项: –版本视图版本 -h指定主机文件列表,内容格式为“ [user @] host [: port]” -H指定的主机,内容格式为[[user @] host [: port]“ -l用户名登录 -p个并发线程[可选] -o输出文件目录[可选] -e输入文件错误[可选] -t TIMEOUT超过了时间设置. 0表示无限制[可选] -O SSH选项 -v查看过程 -手动输入密码模式 -x额外的命令行参数使用空白符号,引号和反斜杠处理 -X附加命令行参数,单参数模式,与-x相同 -i显示每个服务器执行结果的输出信息,默认情况下不显示 -P打印出服务器返回信息 无法建立基于密钥的身份验证将显示[FAILURE]失败 基于密钥的身份验证将显示[成功] 远程连接到主机以执行主机名并显示主机名 pssh -H USER@192.168.x.x -i“主机名” 批量远程执行命令 首先,编写要连接到文件的主机 cat ip.txt 192.168.30.x 192.168.30.xx 192.168.30.xxx ...... 第二,分批显示文件中包含的主机名 pssh -h ip.txt -i“主机名”



本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-267182-1.html
除了军舰潜艇和飞机的对比
就可以锁定中国舰队舰只
胡说