首页 > 系统相关 >linux架构day04:ssh远程管理服务实践

linux架构day04:ssh远程管理服务实践

时间:2023-04-20 17:41:55浏览次数:44  
标签:10.0 172.16 端口 day04 ssh 远程管理 m01 root

ssh远程管理服务实践

linux
   ssh 端口:22  加密传输数据     支持root用户
   telnet 端口:23 明文传输数据   不支持root用户
windows
   rdp 端口:3389 remote desttop protocl

ssh基本概述

SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输。确保了数据传输安全。那SSH服务主要功能有哪些呢?

1.提供远程连接服务器的服务

2.对传输的数据进行加密

区别:

服务连接方式 服务数据传输 服务监听端口 服务器登陆用户
ssh 加密 22/tcp 默认支持root用户登陆
telnet 明文 23/tcp 不支持root用户登陆

使用wireshark验证telnet明文传输与ssh加密传输

1.安装telnet服务并运行

# 安装服务
yum install telnet-server -y
# 启动服务
systemctl start telnet.socket

2.使用wireshark检测vmnet8网卡上telnet的流量

image.png

3.telnet无法使用root用户登录Linux系统,需要创建普通用户

# 创建用户
useradd ljy
# 设置密码
echo '1' | passwd --stdin ljy

4.使用普通用户进行telnet登录

image.png

image.png

image.png 5.搜索wireshark包含telnet的相关数据

image.png

image.png 6.使用wireshark分析ssh流量

image.png image.png

端口

ftp 21
ssh 22
telnet 23
dns 53
mysql 3306
http 80
https 443
rsync 873

ssh相关命令和选项

注意,不加用户@的时候,默认使用当前登录的用户去连接

ssh -p22 [email protected]

# -p指定连接远程主机端口,默认22端口可省略
# root@remotehost
# "@"前面为用户名,如果用当前用户连接,可以不指定用户
# "@"后面为要连接的服务器的IP

ssh 远程连接linux服务器
       -p port 指定端口
       ssh -p8080 [email protected]

ssh 远程连接linux 直接执行命令
       ssh [email protected] 'cat /etc/passwd'

使用scp复制数据至远程主机命令(全量复制)

# 选项
-P 指定端口,默认22端口可不写
-r 表示递归拷贝目录
-p 表示在拷贝文件前后保持文件或目录属性不变
-l 限制传输使用带宽(默认kb)

# 推
scp -p ffdd [email protected]:/tmp/

# 拉
scp [email protected]:/tmp/ffdd ~

# 限速
scp /opt/1.txt [email protected]:/tmp
[email protected] password: 
test                        100%  656MB  '83.9MB/s'   00:07 
#限速为8096kb,换算为MB,要除以 8096/8=1024KB=1MB
scp -rp -l 8096  /opt/1.txt [email protected]:/tmp
[email protected] password: 
test                        7%   48MB   '1.0MB/s'   09:45 

结论

1.scp通过ssh协议加密方式进行文件或目录拷贝。
2.scp连接时的用户作为为拷贝文件或目录的权限。
3.scp支持数据推送和拉取,每次都是全量拷贝,效率较低。

ssh验证方式

1.基于账户密码进行远程登录

知道服务器的IP端口,账号密码,可以直接通过ssh客户端命令登陆远程主机。

[root@web01 ~]# ssh -p22 [email protected]
[email protected] password:
[root@web02 ~]# 

2.基于秘钥远程登录

image.png

将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]

#远程登录对端主机方式
[root@m01 ~]# ssh [email protected]
[root@nfs ~]#
 
#不登陆远程主机bash,但可在对端主机执行命令
[root@m01 ~]# ssh [email protected] "hostname -i"
172.16.1.41

ssh场景实践

实践场景,用户通过Windows/MAC/Linux客户端连接跳板机免密码登录,跳板机连接后端无外网的Linux主机实现免密登录,架构图如下。

实践多用户登陆一台服务器无密码

实践单用户登陆多台服务器免密码

image.png

1.windows客户端使用Xshell生成秘钥对,并下发公钥至跳板机

1)Xshell-->选择工具->新建密钥生成工具

image.png 2)生成公钥对,选择下一步

image.png image.png

  1. 填写秘钥名称。秘钥增加密码则不建议配置

image.png 4) Windows会提示密码,继续

image.png 5) 生成秘钥后,点击Xshell->工具->用户秘钥管理者->选择对应秘钥的属性

image.png 6)选择对应秘钥的公钥,复制

image.png 7) 将从WIndows下复制好的公钥粘贴至跳板机~/.ssh/authorized_keys中,然后测试

[root@m01 ~]# cd ; umask 077; mkdir -p .ssh ;cd .ssh
[root@m01 .ssh]# vim authorized_keys  #添加windows公钥

2.跳板机下发公钥至后端主机

  1. 在跳板机上生成秘钥对
[root@m01 ~]# ssh-keygen -t rsa -C [email protected]

2)拷贝跳板机上的密钥至后端主机,如果ssh不是使用默认的22端口,需要使用-p指定对应端口

[root@m01 ~]# ssh-copy-id  -i /root/.ssh/id_rsa.pub "-p22 [email protected]"

[root@m01 ~]# ssh-copy-id  -i /root/.ssh/id_rsa.pub "-p22 [email protected]"
  1. 在m01管理机上测试是否成功登陆两台服务器
[root@m01 ~]# ssh [email protected]
[root@nfs01 ~]# exit
 
[root@m01 ~]# ssh [email protected]
[root@backup ~]# exit

3.通过跳板机能实现scp拷贝文件免密码

[root@m01 ~]# scp zls.txt [email protected]:/tmp
zls.txt                 100%    0     0.0KB/s   00:00    
[root@m01 ~]# scp zls.txt [email protected]:/tmp
zls.txt                 100%    0     0.0KB/s   00:00  

4.通过跳板机获取所有机器的load,CPU,Memory等信息(思考:如果服务器数量多,如何并发查看和分发数据)

[root@m01 ~]# cat all.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

5.脚本实现(跳板机)

#!/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.61
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
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安全优化

SSH作为远程连接服务,通常我们需要考虑到该服务的安全,所以需要对该服务进行安全方面的配置。

1.更改远程连接登陆的端口

2.禁止ROOT管理员直接登录

3.密码认证方式改为密钥认证

4.重要服务不使用公网IP地址

5.使用防火墙限制来源IP地址

SSH服务登录防护需进行如下配置调整,先对如下参数进行了解

Port 6666                       # 变更SSH服务远程连接端口
PermitRootLogin         no      # 禁止root用户直接远程登录
PasswordAuthentication  no      # 禁止使用密码直接远程登录
UseDNS                  no      # 禁止ssh进行dns反向解析,影响ssh连接效率参数
GSSAPIAuthentication    no      # 禁止GSS认证,减少连接时产生的延迟

将如下具体配置添加至/etc/ssh/sshd_config文件中,参数需根据实际情况进行调整

###SSH###
#Port 6666
#PasswordAuthentication no
#PermitRootLogin no
GSSAPIAuthentication no
UseDNS no
###END###

标签:10.0,172.16,端口,day04,ssh,远程管理,m01,root
From: https://blog.51cto.com/u_16000550/6210009

相关文章

  • JSch - 配置SFTP服务器SSH免密登录
    目录1.什么是SFTP2.什么是Jsch以及它的作用3.sftp服务器认证机制4.publickey和password两种方式登录sftp的API调用需求:做一个通过ssh免密登录的需求,是基于原先密码登录sftp服务器的代码上进行改造1.什么是SFTPSFTP是一个安全文件传送协议,可以为传输文件提供一种安全的加......
  • xshell断开ssh远程窗口,nginx进程被杀死
    主要原因:是openssh8+以上的版本对安全策略做了修改解决方法:在/usr/lib/systemd/system/[email protected] 配置增加KillMode=process[Unit]Description=OpenSSHper-connectionserverdaemonDocumentation=man:sshd(8)man:sshd_config(5)Wants=sshd-keygen.serviceAfter=sshd-ke......
  • 不输入密码ssh直接登录阿里云Linux主机
    评:不输入密码ssh直接登录阿里云Linux主机服务器环境:阿里云云服务器,Linux版本-CentOS客户端环境:MacOSXTerminal在Terminal中用ssh命令登录服务器每次都要输入密码,虽然可以复制/粘贴密码,但登录后一段时间不操作,服务器会自动断开连接,连接时又要复制/粘贴密码,还是有些不方......
  • SSH(网络安全协议)
    SSH的安全机制    SSH之所以能够保证安全,是由于它采用了非对称加密技术(RSA)加密了所有传输的数据。传统的网络服务程序,如FTP、和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人攻击。就是存在另一个人或者一台机器冒......
  • sshd配置文件详解
    转自:http://blog.licess.com/sshd_config/#1.关于SSHServer的整体设定,包含使用的port啦,以及使用的密码演算方式Port22#SSH预设使用22这个port,您也可以使用多的port!#亦即重复使用port这个设定项目即可!Protocol......
  • 【GIT】学习day03 | 如何生成并配置SSH公钥
    快速笔记:1、注册并激活码云账号2、生成并配置SSH公钥(运行[email protected]检测SSH公钥是否配置成功)3、创建空白的码云仓库4、把本地项目上传到码云对应的空白仓库中双击进入 打开里面复制公钥 添加到gitee上即可 新建仓库步骤 然后创建就完事了,不过一开始......
  • 远程管理
    第八章实验推荐步骤:Centos01添加一块40G磁盘,创建分区,创建分区挂载目录/benet,设置开机自动挂载Centos01的sda磁盘的前512字节备份到/benet/name.mbr.bak,模拟MBR程序故障进入到急救模式恢复备份的mbr程序,将grub引导菜单备份到/benet目录模拟Centos01密码遗忘进入急救模式修改root密码......
  • ssh服务
    拓扑图:推荐步骤:配置ssh服务器端开启账户密码验证和ssh免交互式身份验证功能,客户端使用账户密码验证远程登录在Centos02客户端生成密钥对将客户端公钥上传到远程访问服务器,客户端登录不需要输入密码修改ssh配置文件拒绝客户端IP地址通过root账户登录,配置hostsdengy拒绝客户端主机IP......
  • VMware centos7静态IP,开通SSH
     1CMD里ipconfig查看虚拟机网卡分配的IP网段:  2虚拟机设置这里选自定义VMnet8,不然就算改了ifcfg-en32,也不能访问外网  3 vi/etc/sysconfig/network-scripts/ifcfg-en32BOOTPROTO=static    #开机协议,有dhcp及static;ONBOOT=yes     #设置为开......
  • 超详细的图解SSH原理(真的超详细哦~~~~~~~~~)
    1.初见SSHSSH是一种协议标准,其目的是实现安全远程登录以及其它安全网络服务。SSH仅仅是一协议标准,其具体的实现有很多,既有开源实现的OpenSSH,也有商业实现方案。使用范围最广泛的当然是开源实现OpenSSH。2.SSH工作原理 在讨论SSH的原理和使用前,我们需要分析一个问题:为什......