day38-SSH安全登录

机器准备 

什么是SSH 

SSH 或 Secure Shell 协议是一种远程管理协议,允许用户通过 Internet 访问、控制和修改其远程服务器。

SSH 服务是作为未加密 Telnet 的安全替代品而创建的,它使用加密技术来确保进出远程服务器的所有通信都以加密方式进行。

SSH是一种网络协议

简单说,SSH是一种网络协议,用于计算机之间的加密登录。

如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。

SSH客户端

Xshell

[root@nfs-31 ~]#rpm -qf /usr/bin/ssh
openssh-clients-7.4p1-16.el7.x86_64

为什么需要SSH

如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。

Secure Shell是Linux系统首选的登录方式,以前使用FTP或telnet登录服务器,都是以明文的形式在网络中发送账号密码,很容易被黑客截取到数据,篡改后威胁服务器数据安全。

因此如何对数据加密,安全传输是重中之重,主要方式有两种:

  • 对称加密(秘钥加密)
  • 非对称加密(公钥加密)

连接服务器的方式 

1. 去机房,拿上键盘、显示器直接连接
2. 使用telnet命令连接(明文数据,密码未加密)
3. 使用ssh安全可靠的远程登录(密码被加密)

不安全登录telnet(实践) 

们以telnet命令,登录服务器为例,查看数据包

telnet是早期用来登录服务器、交换机的一个指令,但是登录账密是明文的不够安全,后来采用ssh登录linux了。

#1.部署telnet服务端,用于telnet登录该机器
[root@nfs-31 ~]#yum install telnet-server telnet -y#2.启动telnet服务
systemctl start telnet.socket
systemctl status telnet.socket#3.检查telnet服务,默认23端口
[root@nfs-31 ~]#netstat -tunlp|grep 23
tcp6       0      0 :::23                   :::*                    LISTEN      1/systemd #4.注意关闭防火墙
systemctl stop firewalld

注:

修改linux认证

linux默认为了安全性,已经禁用了telnet登录,可以临时修改这个,可以测验telnet登录服务器。

[root@nfs-31 ~]#vim /etc/pam.d/remote 
# 注释这一行
#auth       required     pam_securetty.so

或者使用普通用户,telnet即可登录了

useradd yuchao01

学习SSH的任务背景

这里讲解堡垒机、或是跳板机,并非和ssh知识点有直接关联、而是ssh应用的一个明显场景;

ssh的作用依然只是进行服务器的安全连接
1.安全登录服务器,进行账号密码验证;
2.设置密码以外认证方式,使用秘钥登录。

堡垒机是利用该ssh特性,加大服务器安全而设计的一种服务器集群形式

为了最大程度的保护公司内网服务器的安全,公司内部有一台服务器做跳板机(JumpServer)。

运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作。

由于开发人员有时候需要通过跳板机登录到线上生产环境查看一些业务日志,所以现在需要运维人员针对不同的人员和需求对==账号密码进行统一==管理,并且遵循权限最小化原则。


部署ssh要求

  1. 跳板机上为开发人员创建用户,及公共目录,供开发人员使用,并做好权限控制
  2. 所有线上生产服务器搭建sshd服务。
  3. 对于ssh服务根据需求进行配置
    • 禁止root用户远程登录
    • 更改默认端口(22=>10086)
  4. 线上生产服务器创建devyu用户,并安装工具来生成随机密码

 (实战1)SSH密码登录原理

1、加密算法(了解)

①对称加密算法(DES)

总结

1.发送方,使用密钥、对明文数据加密,然后再发出去

2.接收方,必须用同一个密钥、对密文解密,才能转为明文。

3.如果明文数据不加密直接发送,是非常危险的,很容易就被其他人捕获,比如于超给美女打招呼,立马被女朋友发现,当场腿打断。

4.对称加密强度很高,难以破解,问题是当机器数量较多的时候,大量的发送密钥,难以保证密钥安全性,一旦某一个Client被窃取密钥,其他机器的安全性也就崩塌了,因此,非对称加密应运而生

 ②非对称加密算法(RSA)

非对称加密分为:公钥(Public Key)与私钥(Private Key)

使用公钥加密后的密文,只能使用对应的私钥才能解开,破解的可能性很低。

2、对称、非对称加密算法区别是?

  • 对称加密
    1. 使用同一个密钥进行加密和解密,密钥容易泄露
    2. 加密速度快,效率高
    3. 数据传输,速度快
    4. 安全性较低;
  • 非对称加密
    1. 使用不同的密钥(公钥和私钥)进行加密和解密
    2. 加密速度远远慢于对称加密
    3. 数据传输速度慢
    4. 安全性较高

3、SSH认证方式

1.关于root ,账户密码连接的加密,解密流程

root@10.0.0.7
123123

2.关于root,公私钥连接的加密,解密流程

3. 配置ssh的免密登录(生成公私钥)

4. 学习修改sshd的服务端配置文件修改(修改端口,禁止密码登录,只允许公钥登录)

问题来了,我该如何确认,找到这个原理图中所说的公私钥在哪呢?

 要测试基于账户密码认证的登录形式,需要准备2个机器

客户端(windows,linux)
windows
打开cmd,xshell,只识别windows提供的dos命令
还提供了一个工具,叫做git-bash工具,利用这个工具,打开的终端,能识别部分的linux命令,去操作你的windows

# 输入如下命令,首次连接某个linux机器


#1.首次连接,需要用户自己确认机器的指纹信息,输入yes确认后
服务端会发送公钥给客户端,记录到客户端的 ~/.ssh/knows_hosts
 

ssh root@10.0.0.61

2.查看客户端记录的 cat  ~/.ssh/known_hosts  ,记录了服务端的公钥信息
yu@DESKTOP-1TDLFH9 MINGW64 ~/Desktop

$ cat  ~/.ssh/known_hosts# ip       非对称加密
10.0.0.61 ecdsa-sha2-nistp256
AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL/Sx3bAaNcKqo7pC4FTYk3gyZ6hd1D/DKUWVfOd4gZb/8XwlAxWauceHe/BAsW5Z8pEmG6AjSyHM8ckOs94c7Y=

这个字符串,就是你要连接的linux机器的公钥信息

服务端(linux)
10.0.0.61 

此时去你的服务端, 配置文件下寻找 ecdsa该算法的公钥文件

[root@m-61 ~]#ls /etc/ssh/
moduli      sshd_config         ssh_host_ecdsa_key.pub  ssh_host_ed25519_key.pub  ssh_host_rsa_key.pub
ssh_config  ssh_host_ecdsa_key  ssh_host_ed25519_key    ssh_host_rsa_key过滤该算法提供的公私钥文件
[root@m-61 ~]#ls /etc/ssh/ |grep ecdsa
ssh_host_ecdsa_key
ssh_host_ecdsa_key.pub查看公钥
[root@m-61 ~]#cat /etc/ssh/ssh_host_ecdsa_key.pub
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL/Sx3bAaNcKqo7pC4FTYk3gyZ6hd1D/DKUWVfOd4gZb/8XwlAxWauceHe/BAsW5Z8pEmG6AjSyHM8ckOs94c7Y= 查看私钥
[root@m-61 ~]#cat /etc/ssh/ssh_host_ecdsa_key
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIFRG97Nad3sFsLBv5rL/76jHuc1SUsUikqttZdn2j1FroAoGCCqGSM49
AwEHoUQDQgAEv9LHdsBo1wqqjukLgVNiTeDJnqF3UP8MpRZV853iBlv/xfCUDFZq
5x4d78ECxblnykSYboCNLIczxyQ6z3hztg==
-----END EC PRIVATE KEY-----
[root@m-61 ~]#

4.如何确认目标机器的正确性(了解)

首次连接,服务端是让你输入yes,确认该机器的指纹是否正确

指纹信息,是通过公钥,基于sha256加密而来

1.看指纹是什么
yu@DESKTOP-1TDLFH9 MINGW64 ~/Desktop
$ ssh root@10.0.0.61
The authenticity of host '10.0.0.61 (10.0.0.61)' can't be established.
ECDSA key fingerprint is
SHA256:Csqwr63+SZRFFOug/IGoFTgRe8hDSI/QalSMBcC6IaU.
Are you sure you want to continue connecting (yes/no/[fingerprint])?


2.根据你获取到的公钥信息,通过sha256计算下,得到指纹,在对比这俩指纹是否一致,就明确该机器是你想连接的机器了。。。
你可以在服务端敲
ssh-keygen -E SHA256 -lf /etc/ssh/ssh_host_ecdsa_key.pub

如何再客户端验证该指纹
在客户端,获取到该机器的公钥
yu@DESKTOP-1TDLFH9 MINGW64 ~/Desktop
$ ssh-keyscan  10.0.0.61 |grep ecdsa
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
10.0.0.61 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL/Sx3bAaNcKqo7pC4FTYk3gyZ6hd1D/DKUWVfOd4gZb/8XwlAxWauceHe/BAsW5Z8pEmG6AjSyHM8ckOs94c7Y=

vim 61.pub

对公钥加密256加密,得到指纹
ssh-keygen -E SHA256 -lf  61.pub

在客户端,去验证,你连接的机器,是否是你想连接的

ssh root@10.0.0.61

基于公钥确认,先得知该机器的公钥信息

两个办法,获取到机器公钥信息1.在客户端扫描该机器的公钥
yu@DESKTOP-1TDLFH9 MINGW64 ~/Desktop
$ ssh-keyscan  10.0.0.61 |grep ecdsa
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
10.0.0.61 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL/Sx3bAaNcKqo7pC4FTYk3gyZ6hd1D/DKUWVfOd4gZb/8XwlAxWauceHe/BAsW5Z8pEmG6AjSyHM8ckOs94c7Y=2.在服务端
[root@m-61 ~]#cat /etc/ssh/ssh_host_ecdsa_key.pub
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL/Sx3bAaNcKqo7pC4FTYk3gyZ6hd1D/DKUWVfOd4gZb/8XwlAxWauceHe/BAsW5Z8pEmG6AjSyHM8ckOs94c7Y= 

我们在进行指纹认证的时候,是直接输入yes,并未做确认

证明,你yes确认的机器,的确是目标的机器

你yes确认的那个指纹,是通过公钥文件,加密而来,用同样的算法,对该文件加密,就可以看到一样的指纹了

1.首次连接,指纹确认
yu@DESKTOP-1TDLFH9 MINGW64 ~/Desktop
$ ssh root@10.0.0.61

The authenticity of host '10.0.0.61 (10.0.0.61)' can't be established.
ECDSA key fingerprint is SHA256:Csqwr63+SZRFFOug/IGoFTgRe8hDSI/QalSMBcC6IaU.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

ECDSA key fingerprint is SHA256:Csqwr63+SZRFFOug/IGoFTgRe8hDSI/QalSMBcC6IaU.

2.服务端发给客户端自己的公钥,客户端记录到本地~/.ssh/known_hosts(通用语windows,linux),表示已知的服务器公钥信息

cat ~/.ssh/known_hosts

此时客户端,还未确认该指纹,就不会吧服务端的公钥,写入到该文件中
你现在可以去比对,指纹是否一致
ssh-keygen扫描公钥
ssh-keyscan命令,可以获取目标机器的公钥信息,扫描目标机器的公钥

在客户端操作
ssh-keyscan  10.0.0.61

yu@DESKTOP-1TDLFH9 MINGW64 ~/Desktop
$ ssh-keyscan  10.0.0.61


# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
10.0.0.61 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/a19vEmUMzhzEM8Hbqy2Cd2KL838ojWDO/TDiMOpaKZ6okJ7kBsy8eK0ukYqMj/xBgco8rlc8nz171rul3HN1uUgu7+c8TNbAyggyiWNmaZzYMbWYwC5ZhhlPA8RU+39Znw4BpwKqEC76h2dAj/OOwEADIJK4GuwEnsTmCy2CSh4hqL7M1MWlsV7Kkc0ZBA4tYmz/qAYakl8PFF+CY7YWMJFWDvqLxGdEcqBkvIJ1hEuB21UDhXCOimYgp94frzcyeFoGv4WKcKw7Dq3lPh9gT038v6bw/EA5PC4ubjmly3XJUKZoRVcg773Oa/TcBOeZfTW2zPK83X0hQNk9T1KJ
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
10.0.0.61 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL/Sx3bAaNcKqo7pC4FTYk3gyZ6hd1D/DKUWVfOd4gZb/8XwlAxWauceHe/BAsW5Z8pEmG6AjSyHM8ckOs94c7Y=
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
10.0.0.61 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC9lqWZdqpEGg6hV4PbSf/n0NI33oaedK/KFP5YWxF6A
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4


提取服务端远程连接的公钥
# 10.0.0.61:22 SSH-2.0-OpenSSH_7.4
10.0.0.61 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBL/Sx3bAaNcKqo7pC4FTYk3gyZ6hd1D/DKUWVfOd4gZb/8XwlAxWauceHe/BAsW5Z8pEmG6AjSyHM8ckOs94c7Y=


通过命令,对该公钥进行加密,得到指纹
ssh-keygen -E SHA256 -lf /etc/ssh/ssh_host_ecdsa_key.pub


3.你可以去服务端查看公钥信息/etc/ssh/ssh_host_ecdsa_key.pub
和你客户端的known_hosts做对比,是否一致

6、ssh密码认证小结

  • SSH是Linux下远程管理的工具,相比Telnet安全,运维人员必备的神器!

  • SSH的全称Secure Shell,安全的shell,是Client/Server架构,默认端口号为22,TCP协议

  • 必须搞懂SSH通信加密的原理、过程

1.需要你总结
- ssh密码认证的原理,与配置文件,涉及的linux命令
- ssh指纹确认与公钥的原理,与配置文件,涉及的linux命令
- ssh密码认证涉及的所有配置文化(服务端,客户端)

(实战2-服务器安全)sshd服务部署

 软件安装
修改配置文件
启动
使用

1、搭建所有服务的套路

  • 关闭防火墙和selinux(实验环境都先关闭掉)

  • 配置yum源(公网源或者本地源)

  • 软件安装和检查

  • 了解并修改配置文件

  • 启动服务检查运行状态并设置开机自启动

2、搭建SSH服务

这部分内容可以参考于超老师前面讲解的系统初始化篇操作即可

(一)关闭防火墙和selinux
(二)配置yum源
(三)软件安装
①确认是否安装openssh

由于每一台机器都是默认安装了sshd服务的,这里你可以采用期中综合架构里的任何一台机器测试。

[root@m-61 ~]#rpm -qa openssh
openssh-7.4p1-16.el7.x86_64openssl 命令,给你用,去基于不同的算法,创建证书的命令安装openssh服务,提供远程sshd服务
[root@m-61 ~]#rpm -qa openssh-server
openssh-server-7.4p1-16.el7.x86_64# 默认yum有2个功能,1是安装,2是升级yum install openssh-server openssh -y
(四)ssh基本安全配置

提升服务器ssh安全,就是来修改该配置文件了,先来看简单的配置;

1.禁用root用户登录、降低权限(只能通过普通用户登录,提前创建好可登录的普通普通户)
[root@m-61 ~]# useradd bob01 
[root@m-61 ~]# cat random-pw.txt 
gBPKYvF1
[root@m-61 ~]#
[root@m-61 ~]#
[root@m-61 ~]#cat random-pw.txt | passwd --stdin bob01
Changing password for user bob01.
passwd: all authentication tokens updated successfully.
[root@m-61 ~]#
[root@m-61 ~]#修改
#PermitRootLogin yes
PermitRootLogin no2.修改端口,22999
Port 229993.查看这俩配置参数
grep -Ei '^permitRootLogin|^port'    /etc/ssh/sshd_config 
grep -Ei '^(permitRootLogin|port)'    /etc/ssh/sshd_config 
4.1 pwgen随机密码生成工具

yum install pwgen -y

(五)服务管理
[root@m-61 ~]#netstat -tunlp |grep sshd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      4516/sshd           
tcp6       0      0 :::22                   :::*                    LISTEN      4516/sshd     重启
systemctl restart sshd[root@m-61 ~]#
[root@m-61 ~]#netstat -tunlp |grep sshd
tcp        0      0 0.0.0.0:22999           0.0.0.0:*               LISTEN      4654/sshd           
tcp6       0      0 :::22999                :::*                    LISTEN      4654/sshd  

 加上端口
默认不让root登录了
[C:\~]$ ssh root@10.0.0.61 22999

用bob01登陆下

(六)恢复默认配置

sed改回去

permitRootLogin

port


先看看参数
sed多次处理

看到该参数
sed -e '/^permitRootLogin/Ip'   -e '/^port/Ip'  /etc/ssh/sshd_config -n
Port 22
PermitRootLogin yes

整行内容替换,写入文件内容
sed -i.ori   -e '/^permitRootLogin/Ic PermitRootLogin yes'   -e '/^port/Ic Port 22'  /etc/ssh/sshd_config

替换方案
sed -i.bak  -e 's#PermitRootLogin no#PermitRootLogin yes#' -e 's#Port 22999#Port 22#' /etc/ssh/sshd_config

免密登录(重点)

  • 公钥:一串字符串,在非对称加密里面用来加密数据,随意公开。

  • 私钥:一串字符串,在非对称加密里面用来解密数据,不能泄露。

    • 你原本是用root的密码进行身份验证,登录该服务器

    • 客户端更换为公钥形式登录

  • 普通密钥:一串字符串。在对称加密里面,加密和解密都用它。

总体思路图:

 windows免密登录

基于公私钥的认证(免密码登录)

windows免密登录linux

公钥文件会记录主机名

1. 生成公私钥,客户端的
客户端的~/.ssh 这个目录,就存放了客户端机器的公私钥文件yu@DESKTOP-1TDLFH9 MINGW64 ~/Desktop
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/yu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/yu/.ssh/id_rsa
Your public key has been saved in /c/Users/yu/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:Bsp4uy8IchkJAUuxA4dspOxcckzdTyBR2qWAZ3BmT/g yu@DESKTOP-1TDLFH9
The key's randomart image is:
+---[RSA 3072]----+
|B*oo+B=+..       |
|B=+.+=B.o.       |
|+* =o.o+o        |
|o Bo . E .       |
| o.o+   S        |
|o o. . .         |
|.o ..            |
|  . ..           |
|    .o.          |
+----[SHA256]-----+yu@DESKTOP-1TDLFH9 MINGW64 ~/Desktop
$ ls ~/.ssh
id_rsa  id_rsa.pub2.发给服务端
客户端的公私钥对以及有了,把客户端的公钥,发给服务端(~/.ssh/)
[root@m-61 ~]#ls ~/.ssh
known_hosts通过命令,吧客户端的公钥,写入到服务端的authorized_keys文件中$ ssh-copy-id root@10.0.0.613.检查服务端的 信任主机公钥文件 
这里存放了 客户端的公钥字符串
[root@m-61 ~]#cat  ~/.ssh/authorized_keys 4.此时已经可以免密登录了,只能通过git-bash这个工具去免密登录,因为记录该主机名ssh root@10.0.0.61

linux免密登录linux

master-61  免密登录 web-71.在61机器生成公私钥对儿
ls ~/.ssh/
[root@m-61 ~]#ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:hkQRbkCBSXpR1QCXvgIEYfDOmk0Yka6UsYsH1B6MjLc root@m-61
The key's randomart image is:
+---[RSA 2048]----+
|O**=*+B*         |
|+O== =. .        |
|=oB...+          |
|.@E. o..         |
|=.=.  ..S        |
|o*. . ..         |
|o..  .           |
|                 |
|                 |
+----[SHA256]-----+2.检查公私钥[root@m-61 ~]#ll ~/.ssh/
total 16
-rw------- 1 root root  572 Apr 27 15:19 authorized_keys
-rw------- 1 root root 1679 Apr 27 15:26 id_rsa
-rw-r--r-- 1 root root  391 Apr 27 15:26 id_rsa.pub
-rw-r--r-- 1 root root  341 Apr 27 14:45 known_hosts3.发送master-61的公钥,给web-7
为了免密登录
ssh-copy-id root@10.0.0.7提问,web-7是如何允许master-61登录自己的?
root   /etc/passwd
123123   /etc/shadow换了形式验证master-61是否被允许登录
前提一定你通过某办法,吧master-61的公钥,写入到web-7机器的~/.ssh/authorized_keys web-7 会去自己的 ~/.ssh/authorized_keys 是否有master-61的公钥 比对,web-7上记录的公钥,以及比对master-61本地的公钥
[root@web-7 ~]#cat ~/.ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDhShiDhxEZbVaGzIo7rw3KM0tr6nU8eawVHWjwgpkk8RQ56QVaHt5030lDQ7qA9W+C4btDc1A34WLkfCsz2J8+QEKAvZYBSxzK++8H+bBDpcBPWRE0mMwtCAdBv/0uSrg5QLVHMwro8ezrctFpbV6A+BN383AxaOkz3ccG/578dB7DK1n/WrHIR7LwJSp3lv2PpeTM72vKAgvS1RM9O36cA7kCSz4KxbbpUfAGlQk45iJiod1lXk2a+b3xxdMRee5nVRAkmZmP+HLHqUzqQIwcrahRRcDiTBEIt1SPDT6/y02zKJYG7ZWotozpeDEVvC/Bg5N0mMTMKztCQeNBn5Pp root@m-61master-61机器检查本地生成的公钥
[root@m-61 ~]#cat ~/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDhShiDhxEZbVaGzIo7rw3KM0tr6nU8eawVHWjwgpkk8RQ56QVaHt5030lDQ7qA9W+C4btDc1A34WLkfCsz2J8+QEKAvZYBSxzK++8H+bBDpcBPWRE0mMwtCAdBv/0uSrg5QLVHMwro8ezrctFpbV6A+BN383AxaOkz3ccG/578dB7DK1n/WrHIR7LwJSp3lv2PpeTM72vKAgvS1RM9O36cA7kCSz4KxbbpUfAGlQk45iJiod1lXk2a+b3xxdMRee5nVRAkmZmP+HLHqUzqQIwcrahRRcDiTBEIt1SPDT6/y02zKJYG7ZWotozpeDEVvC/Bg5N0mMTMKztCQeNBn5Pp root@m-61此时可以免密登录了
ssh root@10.0.0.7

配置文件总结

ssh-copy-id root@10.0.0.7 主要免密登录

cat ~/.ssh/known_hosts 记录了服务端的公钥信息

免密登录
检查web-7上的authorized_keys
检验master-61的公私钥文件

SSH远程执行命令

 查看主机名

[root@m-61 ~]#ssh root@10.0.0.8 hostname
root@10.0.0.8's password: 
web-8
​

查看内存

[root@m-61 ~]#ssh root@10.0.0.7  free -mtotal        used        free      shared  buff/cache   available
Mem:           1982         108        1410          25         463        1666
Swap:             0           0           0
 
远程创建文件[root@m-61 ~]#ssh root@10.0.0.7  touch /tmp/6666.png

远程安装软件redis

web7 redis
​
ssh root@10.0.0.7  yum install redis -y
​
远程删除redis
ssh root@10.0.0.7  yum remove redis -y

远程查看服务状态

远程查看web-7的nginx运行状态
​
ssh  root@10.0.0.7   systemctl status nginx

ssh安全防御

1.ssh支持密码连接、秘钥连接两个方式,为了密码别泄露,你得关闭密码登录
2.默认端口号全世界都知道是22,你得改掉
3.如果客户端私钥被窃取,root服务器也就危险了

ssh优化

禁止密码登录,只允许公钥登录

[root@web-7 ~]#grep -Ei '^(pub|password)'  /etc/ssh/sshd_config 
PubkeyAuthentication yes
PasswordAuthentication no
​

修改默认22端口

[root@web-7 ~]#grep -Ei '^(pub|password|port)'  /etc/ssh/sshd_config 
Port 22999
PubkeyAuthentication yes
PasswordAuthentication no

重启服务

[root@web-7 ~]#systemctl restart sshd

用master-61机器去登录他

[root@m-61 ~]#ssh root@10.0.0.7 -p 22999
Last login: Wed Apr 27 16:35:42 2022 from 10.0.0.1
[root@web-7 ~]#
​

用web-8机器也尝试登录web-7

发现是可以登录的

 限制主机登录条件、设定iptables规则,只允许跳板机的流量(172.16.1.61)登录,其他机器的流量全部禁止。(只限定ssh的服务,限制22999的流量)

在想添加该规则的机器上执行

针对web-7限定只允许 master-61访问

[root@web-7 ~]#iptables -A INPUT ! -s 172.16.1.61 -p tcp --dport 22999 -j DROP
[root@web-7 ~]#
[root@web-7 ~]#
[root@web-7 ~]#iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  -- !172.16.1.61          anywhere             tcp dpt:22999Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination       

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/492905.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用React构建一个掷骰子的小游戏

这是一个用 React 构建的小游戏应用,名为 Tenzies,目标是掷骰子,直到所有骰子的值相同。玩家可以“冻结”某些骰子,使它们在后续掷骰中保持不变。 1. App.jsx import Die from "../public/components/Die" import { us…

vue 文本域 展示的内容格式要和填写时保持一致

文本域 展示的内容格式要和填写时保持一致 <el-inputtype"textarea":rows"5"placeholder"请输入内容"v-model"formCredit.point"style"width:1010px;" > </el-input> 样式加个&#xff1a; white-space: pre-w…

[Linux] 信号保存与处理

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 主厨&#xff1a;邪王真眼 主厨的主页&#xff1a;Chef‘s blog 所属专栏&#xff1a;青果大战linux 总有光环在陨落&#xff0c;总有新星在闪烁 信号的保存 下面的概…

【Axure高保真原型】伸缩表单

今天和大家分享伸缩表单的原型模板&#xff0c;效果包括在需要填写内容较多时&#xff0c;可以对填写内容进行分类&#xff0c;然后通过点击上下箭头&#xff0c;收起或展开对应的信息。这个模版里面包含了输入框、下拉列表、选择器、上次图片共多种种常用的元件&#xff0c;后…

InternVL简读

InternVL: Scaling up Vision Foundation Models and Aligning for Generic Visual-Linguistic Tasks 1. Introduction 需要解决的问题&#xff1a; existing VLLMs [5, 81, 131, 177, 187] commonly employ lightweight “glue” layers, such as QFormer [81] or linear pr…

从源码分析swift GCD_DispatchGroup

前言&#xff1a; 最近在写需求的时候用到了DispatchGroup&#xff0c;一直没有深入去学习&#xff0c;既然遇到了那么就总结下吧。。。。 基本介绍&#xff1a; 任务组&#xff08;DispatchGroup&#xff09; DispatchGroup 可以将多个任务组合在一起并且监听它们的完成状态。…

AFL-Fuzz 的使用

AFL-Fuzz 的使用 一、工具二、有源码测试三、无源码测试 一、工具 建议安装LLVM并使用afl-clang-fast或afl-clang-lto进行编译&#xff0c;这些工具提供了更现代和高效的插桩技术。您可以按照以下步骤安装LLVM和afl-clang-fast&#xff1a; sudo apt update sudo apt install…

ONES 功能上新|ONES Copilot、ONES Wiki 新功能一览

ONES Copilot 可基于工作项的标题、描述、属性信息&#xff0c;对工作项产生的动态和评论生成总结。 针对不同类型的工作项&#xff0c;总结输出的内容有对应的侧重点。 应用场景&#xff1a; 在一些流程步骤复杂、上下游参与成员角色丰富的场景中&#xff0c;工作项动态往往会…

EasyGBS国标GB28181平台P2P远程访问故障排查指南:客户端角度的排查思路

在现代视频监控系统中&#xff0c;P2P&#xff08;点对点&#xff09;技术因其便捷性和高效性而被广泛应用。然而&#xff0c;当用户在使用P2P远程访问时遇到设备不在线或无法访问的问题时&#xff0c;有效的排查方法显得尤为重要。本文将从客户端的角度出发&#xff0c;详细探…

Soul Android端稳定性背后的那些事

前言&#xff1a;移动应用的稳定性对于用户体验和产品商业价值都有着至关重要的作用。应用崩溃会导致关键业务中断、用户留存率下降、品牌口碑变差、生命周期价值下降等影响&#xff0c;甚至会导致用户流失。因此&#xff0c;稳定性是APP质量构建体系中最基本和最关键的一环。当…

mfc140u.dll是什么文件?如何解决mfc140u.dll丢失的相关问题

遇到“mfc140u.dll文件丢失”的错误通常影响应用程序的运行&#xff0c;这个问题主要出现在使用Microsoft Visual C环境开发的软件中。mfc140u.dll是一个重要的系统文件&#xff0c;如果它丢失或损坏&#xff0c;会导致相关程序无法启动。本文将简要介绍几种快速有效的方法来恢…

mybatis分页插件的使用

1. 引入依赖包 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>6.1.0</version> </dependency> 2 添加分页插件配置 2.1 使用配置类的方式&#xff08;推荐&#xff09…

手机便签哪个好用?手机桌面便签app下载推荐

在快节奏的现代生活中&#xff0c;我们常常需要记录一些重要的信息和灵感&#xff0c;以便于日后查阅和回顾。手机便签软件因其便携性和易用性&#xff0c;成为了我们日常生活中不可或缺的工具。无论是购物清单、待办事项、灵感记录还是重要笔记&#xff0c;手机便签都能帮助我…

Zabbix6.0升级为6.4

为了体验一些新的功能&#xff0c;比如 Webhook 和问题抑制等&#xff0c;升级个小版本。 一、环境信息 1. 版本要求 一定要事先查看官方文档&#xff0c;确认组件要求的版本&#xff0c;否则版本过高或者过低都会出现问题。 2. 升级前后信息 环境升级前升级后操作系统CentOS…

怎么将pdf中的某一个提取出来?介绍几种提取PDF中页面的方法

怎么将pdf中的某一个提取出来&#xff1f;传统上&#xff0c;我们可能通过手动截取屏幕或使用PDF阅读器的复制功能来提取信息&#xff0c;但这种方法往往不够精确&#xff0c;且无法保留原文档的排版和格式。此外&#xff0c;很多时候我们需要提取的内容可能涉及多个页面、多个…

LeetCode:101. 对称二叉树

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;101. 对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输…

力扣-图论-18【算法学习day.68】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非…

深度学习之目标检测——RCNN

Selective Search 背景:事先不知道需要检测哪个类别,且候选目标存在层级关系与尺度关系 常规解决方法&#xff1a;穷举法&#xff0c;在原始图片上进行不同尺度不同大小的滑窗&#xff0c;获取每个可能的位置 弊端&#xff1a;计算量大&#xff0c;且尺度不能兼顾 Selective …

【计算机视觉基础CV】03-深度学习图像分类实战:鲜花数据集加载与预处理详解

本文将深入介绍鲜花分类数据集的加载与处理方式&#xff0c;同时详细解释代码的每一步骤并给出更丰富的实践建议和拓展思路。以实用为导向&#xff0c;为读者提供从数据组织、预处理、加载到可视化展示的完整过程&#xff0c;并为后续模型训练打下基础。 前言 在计算机视觉的深…

Linux 中的 mkdir 命令:深入解析

在 Linux 系统中&#xff0c;mkdir 命令用于创建目录。它是文件系统管理中最基础的命令之一&#xff0c;广泛应用于日常操作和系统管理中。本文将深入探讨 mkdir 命令的功能、使用场景、高级技巧&#xff0c;并结合 GNU Coreutils 的源码进行详细分析。 1. mkdir 命令的基本用法…