02架构 13 ssh 远程管理

免交互sshpass

1.安装sshpass
[root@m01 ~]# yum install -y sshpass
2.使用sshpass命令
[root@m01 ~]# sshpass -p 1 ssh root@10.0.0.7
[root@m01 ~]# sshpass -p 1 ssh -o stricthostkeychecking=no root@10.0.0.7
Warning: Permanently added '10.0.0.7' (ECDSA) to the list of known hosts.
Last login: Thu Dec  5 12:13:08 2019 from 10.0.0.61
[root@web01 ~]#

[root@m01 ~]# sshpass -p 123456 ssh root@10.0.0.51

[option]
-p:指定密码
-f:从文件中取密码
-e:从环境变量中取密码
-P:设置密码提示

跳板机

1.创建秘钥对
ssh-keygen 
选项:
[-P old_passphrase] [-N new_passphrase] [-f keyfile]
-P		密码
[-t dsa | ecdsa | ed25519 | rsa | rsa1]
-t		秘钥类型
[-f output_keyfile]  
-f		输出的秘钥文件
-q		静默执行命令

	#创建秘钥对
[root@m01 ~]# ssh-keygen

	#免交互创建秘钥对
ssh-keygen -P '' -qf /root/.ssh/id_rsa
2.分发公钥到其他主机
手动推送公钥
# ssh-copy-id 命令推送公钥需要输入其他主机root用户密码
#推送 m01 主机公钥 /root/.ssh/id_rsa.pub 到其他主机 /root/.ssh/authorized_keys 文件中
[root@m01 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.7
[root@m01 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@172.16.1.31

#手动方法:
1、在其他主机家目录下创建.ssh目录,授权为700
mkdir ~/.ssh -p
chmod 700 ~/.ssh/

2、在.ssh目录下编辑 authorized_keys,内容为m01的公钥 id_rsa.pub
vim authorized_keys

#验证
[root@m01 ~]# ssh 172.16.1.7
免交互分发公钥
#提前下载 sshpass 命令
yum -y install sshpass
选项:
-p 密码

ssh-copy-id 命令
参考网站: https://www.jianshu.com/p/d111d6c36d9b
选项:
-i	指定公钥文件
-p port 指定端口
-f 强制模式
-o StrictHostKeyChecking=no		#推送公钥时不需要输入 yes

#方法一:
echo 'root@172.16.1.'{7,8,31,51}|xargs -n1 sshpass -p 1 ssh-copy-id -o StrictHostKeyChecking=no

#方法二:
	创建一个需要分发公钥的主机列表文件
cat > /root/host.txt << EOF
172.16.1.7
172.16.1.8
172.16.1.31
172.16.1.41
172.16.1.51
EOF
	编辑分发公钥脚本
vim mian.sh
#!/bin/bash
for ip in $(cat /root/host.txt)
do
sshpass -p 1 ssh-copy-id -o StrictHostKeyChecking=no "root@$ip"
done
3.使用脚本实现简单跳板机
[root@m01 ~]# vim /etc/profile.d/jump.sh
#!/bin/bash
#jumpserver
lb01=10.0.0.5
lb02=10.0.0.6
web01=10.0.0.7
web02=10.0.0.8
web03=10.0.0.9
nfs=10.0.0.31
backup=10.0.0.41
db01=10.0.0.51
m01=10.0.0.100
zabbix=10.0.0.71

menu(){
        cat <<-EOF
        +-------------------------+
        |     1) lb01             |
        |     2) lb02             |
        |     3) web01            |
        |     4) web02            |
        |     5) web03            |
        |     6) nfs              |
        |     7) backup           |
        |     8) db01             |
        |     9) m01              |
        |     10) zabbix          |
        |     h) help             |
        +-------------------------+
EOF
}
#菜单函数
menu

#连接函数
connect(){
  ping -c 1 -w 1 $1 &>/dev/null
  if [ $? -eq 0 ];then
    ssh root@$1
  else
    echo -e "\033[5;4;40;31m 别连了,我的哥,$2:$1机器都没开!!!\033[0m"
  fi
}

#控制不让输入ctrl+c,z 设置了这一项就一定要设置 close
trap "" HUP INT TSTP
while true
do
    read -p "请输入要连接的主机编号:" num
    case $num in
            1|lb01)
              connect $lb01 lb01
                    ;;
            2|lb02)
              connect $lb02 lb02
                    ;;
            3|web01)
              connect $web01 web01
                    ;;
            4|web02)
              connect $web02 web02
                    ;;
            5|web03)
                  connect $web03 web03
                    ;;
            6|nfs)
              connect $nfs nfs
                    ;;
            7|backup)
                  connect $backup backup
                    ;;
            8|db01)
                   connect $db01 db01
                    ;;
            9|m01)
                    connect $m01 m01
                    ;;
            10|zabbix)
                    connect $zabbix zabbix
                    ;;
            h|help)
                    clear
                    menu
                    ;;
            close)
                    break
                    ;;
    esac
done

ssh安全优化

【在推送之前必须先结束跳板机进程,并将跳板机设置的/etc/profile.d/jump.sh配置脚本删除,否则会卡住】

1、设置Xshell秘钥:
工具-用户秘钥管理者-生成-下一步-下一步-秘钥名称【随意设置: 秘钥连接 】-完成

2、在m01主机上创建普通用户mcy,并配置 xshell 公钥文件
[root@m01 ~]# useradd mcy
[root@m01 ~]# passwd mcy
	#切换普通用户
[root@m01 ~]# su - mcy
[mcy@m01 ~]$ pwd
/home/mcy
[mcy@m01 ~]$ mkdir /home/mcy/.ssh
[mcy@m01 ~]$ chmod 700 /home/mcy/.ssh
	# Xshell 秘钥放入普通用户的/home/mcy/.ssh/authorized_keys文件中
	# Xshell 工具-用户秘钥管理者-【选中:秘钥连接 】属性-公钥-【复制内容】
[mcy@m01 ~]$ vim /home/mcy/.ssh/authorized_keys
[mcy@m01 ~]$ chmod 600 /home/mcy/.ssh/authorized_keys

3、配置 ssh 登陆限制
[root@m01 .ssh]# vim /etc/ssh/sshd_config
Port 555                        # 变更SSH服务远程连接端口【默认前面有#】
PermitRootLogin         no      # 禁止root用户直接远程登录【默认前面有# 默认是yes】
PasswordAuthentication  no      # 禁止使用密码直接远程登录【默认是yes】

4、重启 sshd 服务
systemctl restart sshd

5、修改 Xshell 登陆
新建会话
连接
端口号改为:555
用户身份验证
方法选择:Public Key
用户名改为:mcy
用户秘钥》浏览:秘钥连接

#注意:重启 sshd 服务前,先打开一个 root 用户登录的终端,再确认秘钥登陆正常后再关闭
#如果秘钥登陆失败就先推送 root 用户的公钥到 mcy 用户的目录下
#再将 Xshell 秘钥放入普通用户的 /home/mcy/.ssh/authorized_keys 文件中
[root@m01 ~]# ssh-copy-id -i .ssh/id_rsa.pub mcy@172.16.1.100

ssh 连接优化

vim /etc/ssh/sshd_config
UseDNS                  no      # 禁止ssh进行dns反向解析,影响ssh连接效率参数【默认前面有#】
GSSAPIAuthentication    no      # 禁止GSS认证,减少连接时产生的延迟【默认是yes】

vim /etc/ssh/ssh_config
GSSAPIAuthentication no			# 禁止GSS认证,减少连接时产生的延迟【默认是yes】

所有主机的IP和域名加上去,使得本机的DNS服务能更快解析目标地址
vim /etc/hosts
192.168.100.11  doiido.com
10.0.0.11 backup

修改server上nsswitch.conf文件
注意:如果SERVER需要通过域名访问其他服务器,则需要保留此行。一般不改
# vi /etc/nsswitch.conf
找到
hosts: files dns
改为
hosts:files

hosts: files dns这一行含义是对于访问的主机进行域名解析的顺序,是先访问file,也就是/etc/hosts文件,如果hosts中没有记录域名,则访问dns,进行域名解析,如果dns也无法访问,就会等待访问超时后返回,因此等待时间比较长

删除/etc/resolv.conf中所有不使用的IP

打开SERVER上的IgnoreRhosts参数
IgnoreRhosts参数可以忽略以前登录过主机的记录,设置为yes后可以极大的提高连接速度
可以先查看家目录下有没有 ~/.rhosts 和 ~/.shosts 文件,如果没有就不需要设置
# vi /etc/ssh/sshd_config
# Don't read the user's ~/.rhosts and ~/.shosts files
# 不要读取用户的 ~/.rhosts 和 ~/.shosts 文件
IgnoreRhosts yes


# 测试 ssh 连接
现在连接linux服务器一般都是使用SSH远程连接的方式。
如果发现telnet时速度很快,ping时一切也正常,但SSH连接的时候却很慢。

1、SERVER的SSHD会去DNS查找访问的CLIENT IP的HOSTNAME,如果DNS不可用或者没有相关记录,就会消耗一段时间。
2、在authentication gssapi-with-mic有时候也会消耗一段时间


一、测试查找具体原因:
1、使用ssh -v host进行debug
# ssh -v 192.168.100.10
然后就会输出一大堆debug,通过debug信息就可以看到连接到什么地方被耽搁了
比如会显示如下信息:

[html] view plain copy
 
debug1: Next authentication method: gssapi-with-mic  
debug1: Unspecified GSS failure. Minor code may provide more information  
No credentials cache found  

2、检测连接时间
time ssh root@10.0.0.31 exit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值