命令记不住

登陆

SSH 远程管理服务

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 22

3.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.com

2.分发密钥,如果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 
免密登录成功
推荐阅读