
SSH远程管理服务
1.SSH基本概述
1.ssh远程连接不上,具体排查思路
- 1.ping 127.0.0.1 TCP/IP协议栈(测试本地的网卡是否故障)
- 2.ping 同网段主机 验证交换机是否异常
- 3.ping 网关地址 验证路由是否可达
- 4.测试连接其他公网服务器-->
- 5.检查22端口是否启动(telnet、nmap)
- 6.检查防火墙是否放行该端口
- 7.服务器流量太大(长时间无法连接)
- 8.服务器的端口被拦截(防火墙拦截22)
- 9.服务器的端口没有被开放
2.测试服务端口有没有开启
# telnet 10.0.0.41 22 # ss -lntup|grep 22 # netstat -lntup # nmap -p 22 10.0.0.41 # nc 10.0.0.41 223.scp复制数据至远程主机命令(全量复制)
# SSH连接远程主机命令的基本语法; # scp 命令 # -P(大写) 指定端口,默认22端口可不写 # -r 表示递归拷贝目录 # -p 表示在拷贝文件前后保持文件或目录属性不变 # -l 限制传输使用带宽(默认kb) 4.Sftp远程数据传输命令连接远程sftp
sftp [email protected]
sftp -oPort=52113 [email protected] <-sftp的特殊端口连接
下载文件, 至于本地服务器
sftp> get conf.txt /tmp/
上传本地服务器文件, 至远程服务器
sftp> put /root/t1.txt /root/
2.ssh密钥生成
1.在管理服务器上生成密钥,-t密钥类型, -C指定用户邮箱
[root@m01 ~]# ssh-keygen -t rsa -C [email protected] ... //默认一路回车即可, 当然也可以根据不同需求进行修改 ...2.将A服务器上的公钥推送至B服务器
//命令示例: ssh-copy-id [-i [identity_file]] [user@]machine ssh-copy-id //命令 -i //指定下发公钥的路径 [user@] //以什么用户身份进行公钥分发(root),如果不输入,表示以当前系统用户身份分发公钥 machine //下发公钥至那台服务器, 填写远程主机IP地址 //秘钥分发, [会将A服务器的公钥写入B服务器~/.ssh/authorized_keys文件中] [root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]3.推送公钥至远程服务器(默认22)
[root@manager ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]4.推送公钥至远程服务器带端口(防止端口不是默认)
[root@manager ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub "-p22" [email protected]5.windows如何生成密钥。下发给需要登录的服务器
[root@manager ~]# touch ~/.ssh/authorized_keys [root@manager ~]# chmod 600 ~/.ssh/authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1kLKGAVa0t9eVvV0UpkNJK5UqyEMrSHL/mk3e5EZ2CN1EQnYZeG1k05q/eY2F3Xi6iRLoF4thpOLAnPQxT/iKhKXgmuikTaA4+VtN5i9iTf/G4rQpJz56v1uD/SbunyPdFM++CA5YmSzTDJRPGupXy4+QVlZ0CY+gCtpxYeeJjd8m9nfkNVhFkfmp2S+TGSVmfvgMEvE/HpYdl4qUiqFNn8YxLlm5RWp7GxzztN9e5Cm4fOiPSsjj83GpPrjHxqSbNEHedOBCl1fqv20b2EO/00o8VHhlBWc1ZSuGSKNe+YJW6UBICbWC8f4YDtuMvRWtwRKwi24EXkwXqaK+xAB6Q==6.A服务器通过密钥方式连接B服务器
//远程登录对端主机方式 [root@m01 ~]# ssh [email protected] [root@nfs ~]# //不登陆远程主机执行命令 [root@m01 ~]# ssh [email protected] "hostname -i" 172.16.1.41 //可能遇到错误 1.no route to host 防火墙 2.Connection refused 防火墙或服务未启用
3.SSH服务密钥分发实战
- 1.实现m01服务器通过密钥登录backup和nfs服务器
- 2.实现m01服务器查看backup和nfs的服务器的状态信息(无需密码)
角色 外网IP 内网IP 用户 m01分发密钥 eth0:10.0.0.61 eth1:172.16.1.61 root nfs被控端 eth0:10.0.0.31 eth1:172.16.1.31 root backup被控端 eth0:10.0.0.41 eth1:172.16.1.41 root 1.在m01控制端生成密钥
[root@m01 ~]# ssh-keygen -t rsa -C A-Server.com2.分发密钥,如果SSH不是使用默认22端口, 使用-P指定对应端口
[root@m01 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub "-p6666 [email protected]" [root@m01 ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub "-p6666 [email protected]"3.在m01管理机上测试是否成功登陆两台服务器
[root@m01 ~]# ssh -p6666 [email protected] [root@nfs01 ~]# [root@m01 ~]# ssh -p6666 [email protected] [root@backup ~]#
4.SSH安全访问控制
SSH远程服务访问控制手段
1.更改SSH服务远程登录端口
2.更改SSH服务监听本地内网IP
3.更改SSH服务禁止ROOT管理员登录
4.更改SSH服务密码登录认证为密钥登录
5.重要服务器都不使用公网IP地址
6.使用防火墙限制来源IP地址1.SSH服务登录防护手段配置文件/etc/ssh/sshd_config
Port 6666 # 变更SSH服务远程连接端口 ListenAddress 10.0.0.61 # 绑定本地内网地址 PermitRootLogin # 是否允许root用户远程登录 PasswordAuthentication # 是否允许使用密码登录 UseDNS # 是否进行dns反向解析,影响ssh连接效率参数 GSSAPIAuthentication # 是否进行认证,影响ssh连接效率参数SSH配置实例, 添加如下配置至/etc/ssh/sshd_config, 根据业务需求调整配置
###SSH### Port 6666 ListenAddress 10.0.0.61 #PasswordAuthentication no #PermitRootLogin no GSSAPIAuthentication no UseDNS no ###END###
5.ssh免密多种场景
1.使用root用户完成一把钥匙开多把锁A钥匙,BC锁
//1.创建公钥和私钥(A)
[root@manager ~]# ssh-keygen
//分发A公钥至(BC)
[root@manager ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
[root@manager ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
2.在不破坏题1的前提下,完成多把钥匙开一把锁BC钥匙,A锁
//1.生成公钥和私钥(B)
[root@nfs01 ~]# ssh-keygen
//2.B下发公钥给A
[root@nfs01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
//3.生成公钥和私钥(C)
[root@nfs01 ~]# ssh-keygen
//4.C下发公钥给A
[root@backup ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
3.如何实现从A指定目录或文件分发到BC服务器
[root@manager ~]# scp manager-web [email protected]:/tmp
manager-web 100% 0 0.0KB/s 00:00
[root@manager ~]# scp manager-web [email protected]:/tmp
manager-web 100% 0 0.0KB/s 00:00
4.如何快速查看所有机器的load,CPU,Memory等信息(思考:如果服务器数量多,如何并发查看和分发数据)
[root@manager ~]# cat test.sh
#!/usr/bin/bash
[ $# -ne 1 ] && echo "请输入执行的命令" && exit 1
for i in 31 41
do
echo "#########172.16.1.$i#####"
ssh [email protected].$i "$1"
done
6.推送pub文件进行免密
远程登录需要密码
[root@master1 /root/.ssh] master1 #ssh node2 root@node2's password:将公钥id_rsa.pub推送至目标服务器
[root@master1 /root] master1 #scp .ssh/id_rsa.pub [email protected]:/root/ [email protected]'s password: id_rsa.pub 100% 394 161.0KB/s 00:00然后将公钥内容追加到
[root@node2 /root] node2 #cat id_rsa.pub >> .ssh/authorized_keys验证
[root@master1 /root] master1 #ssh node2 Last login: Mon Sep 20 13:37:17 2021 from 192.168.83.1 [root@node2 /root] node2 免密登录成功