1.实现免密登录

要实现免密登录,我们首先需要创建一对密钥,然后将公共密钥上传到目标服务器的指定文件

1>首先我们需要创建密钥

使用 ssh-keygen 命令可以创建于身份验证的私钥与公钥,默认情况下私钥和公钥存放以下位置

·/.ssh/id_rsa  私钥
·/.ssh/id_rsa.pub 公钥

[root@root .ssh]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
/root/.ssh/id_rsa already exists.
Overwrite (y/n)? y
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:V2G8ASNS1ZGRzM2IXqgDoBuLrqtZNdxDHseFe/q1SK4 root@root
The key's randomart image is:
+---[RSA 3072]----+
|    ....oo=O=O   |
|   .  .o.ooo@.o  |
|  o   o.o+ ..o   |
| . = + o+ o..    |
|. o + + S+.      |
|.  . . .... .    |
| ..      + o .   |
|.o        + .    |
|*.      E.       |
+----[SHA256]-----+[root@root ~]# cd /root/.ssh/
[root@root .ssh]# ll
total 12
-rw-------. 1 root root 2590 Jul 24 11:18 id_rsa
-rw-r--r--. 1 root root  563 Jul 24 11:18 id_rsa.pub

2>密钥创建完成,我们需要将公钥传给目标服务器

通过ssh-copy-id的方式

[root@root .ssh]# ssh-copy-id root/192.168.38.130
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed/usr/bin/ssh-copy-id: ERROR: ssh: Could not resolve hostname root/192.168.38.130: Name or service not known[root@root .ssh]# ssh-copy-id root@192.168.38.130
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.38.130's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'root@192.168.38.130'"
and check to make sure that only the key(s) you wanted were added.

此时公钥便可在另一台服务器上查询到

[root@root .ssh]# ll
total 8
-rw-------. 1 root root 1126 Jul 24 20:30 authorized_keys
-rw-r--r--. 1 root root  176 Jul 24 14:46 known_hosts

3>此时我们便可以免密使用ssh远程登录第二台服务器

[root@root .ssh]# ssh root@192.168.38.130
Activate the web console with: systemctl enable --now cockpit.socketThis system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --registerLast login: Sun Jul 24 20:12:36 2022 from 192.168.38.1
[root@root ~]# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.38.130  netmask 255.255.255.0  broadcast 192.168.38.255inet6 fe80::20c:29ff:feb2:cb4e  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:b2:cb:4e  txqueuelen 1000  (Ethernet)RX packets 556  bytes 64404 (62.8 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 418  bytes 65460 (63.9 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2.设置只允许student1, student2用户登录

.AllowUsers user1 user2    #登录白名单(默认没有这个配置,需要自己手动添加),允许远程登录的用户。如果名单中没有的用户,则提示拒绝登录

1>首先我们需要创建两个用户student1,student2

[root@root ~]# useradd student1
[root@root ~]# passwd student1
Changing password for user student1.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@root ~]# useradd student2
[root@root ~]# passwd student2
Changing password for user student2.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

2>在文件/etc/ssh/sshd_config设置白名单

**记者重启ssh服务

systemctl restart sshd.service

3>此时便可以验证,使用student1,student2,rhcsa三个用户分别验证

[student2@root root]$ ssh root@192.168.38.130
The authenticity of host '192.168.38.130 (192.168.38.130)' can't be established.
ECDSA key fingerprint is SHA256:ZZjkzKAVZ4iW4fvCD2fNjJ/GdZqTUuvoxRBnabrmXVg.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.38.130' (ECDSA) to the list of known hosts.
root@192.168.38.130's password:
Activate the web console with: systemctl enable --now cockpit.socketThis system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --registerLast login: Sun Jul 24 20:34:54 2022 from 192.168.38.128
[root@root ~]#
[root@root ~]# su student1
[student1@root root]$ ssh root@192.168.38.130
The authenticity of host '192.168.38.130 (192.168.38.130)' can't be established.
ECDSA key fingerprint is SHA256:ZZjkzKAVZ4iW4fvCD2fNjJ/GdZqTUuvoxRBnabrmXVg.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.38.130' (ECDSA) to the list of known hosts.
root@192.168.38.130's password:
Activate the web console with: systemctl enable --now cockpit.socketThis system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --registerLast login: Sun Jul 24 20:51:48 2022 from 192.168.38.130
[root@root ~]#
[root@root ~]# su rhcsa
[rhcsa@root root]$ ssh root@192.168.38.130
root@192.168.38.130's password:
Permission denied, please try again.
root@192.168.38.130's password:
Permission denied, please try again.
root@192.168.38.130's password:
root@192.168.38.130: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
[rhcsa@root root]$ 

如图所示student1,和student2可以登录root用户,而rhcsa用户则因为权限不足无法登录
3.get和post的区别

1.表现形式上:GET可以被缓存,POST不会

GET安全性比较差,POST比较好

GET在浏览器回退时是无害的,而POST会再次提交请求

GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留

2.功能上:get是从服务器获取数据,而post是向服务器发送数据

3.长度上:get发送数据时,个体、向URL添加数据,而URL长度是有限的,因此get长度有限,而post长度无限制
4.HTTP状态码,常用的状态码有哪些?

  • 状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

    • 1xx:指示信息 —— 表示请求已接收,继续处理
    • 2xx:成功 —— 表示请求已被成功接收、理解、接受
    • 3xx:重定向 —— 要完成请求必须进行更进一步的操作
    • 4xx:客户端错误 —— 请求有语法错误或请求无法实现
    • 5xx:服务器端错误 —— 服务器未能实现合法的请求
    • 常见状态代码、状态描述的说明如下:
      • 200 OK:客户端请求成功
      • 400 Bad Request:客户端请求有语法错误,不能被服务器所理解
      • 401 Unauthorized:请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
      • 403 Forbidden:服务器收到请求,但是拒绝提供服务
      • 404 Not Found:请求资源不存在,举个例子:输入了错误的URL
      • 500 Internal Server Error:服务器发生不可预期的错误
      • 503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

5.HTTP请求报文和响应报文

http请求报文由请求行、请求头部、空行和请求报文主体几个部分组成

http响应报文由起始行、响应头部、空行和响应报文主体这几个部分组成

6.HTTP是如何保持连接状态的

cookie+session实现

cookie:

Cookie是由服务器端生成,发送给浏览器,浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时自动发送该Cookie给服务器

Cookie可以用来在某个WEB站点会话间持久的保持状态

session:

Session是另一种记录客户状态的机制,基于Cookie实现,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上

客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是Session,客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

通过cookie和session的了解,我们可以看出Cookie的本质就是文件,一般放在请求头里,保存在浏览器上。

由于cookie并不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

并且session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

所以综合考量我们通常使用cookie+session共同完成状态保持。具体实现如下图所示:

linux远程连接ssh服务和http的深入介绍相关推荐

  1. 如何快速对Linux远程登录SSH服务进行安全加固?

    欢迎关注「全栈工程师修炼指南」公众号 点击

  2. 远程连接linux配置文件,Linux远程连接介绍及相关配置

    Linux远程连接介绍及相关配置 1.使用远程连接的根本原因 在企业现实的工作中,我们不可能每台服务器都配置一台显示器,也不可能时刻在服务器旁边,但是我们企业中的服务器需要时刻进行维护,而我们维护人员 ...

  3. 运维基本功(十六):远程管理SSH服务

    本文是在课程课件基础上修改的学习笔记 课程原地址:https://www.bilibili.com/video/BV1nW411L7xm 如有侵删 运维基本功(一):Linux系统安装 运维基本功(二 ...

  4. Linux远程连接和软件安装

    Linux远程连接和软件安装 文章目录 Linux远程连接和软件安装 1.Linux远程连接简介 2.远程连接准备 3.Linux进程和程序 4.moba实现远程连接步骤: 5.软件安装 1)yum命 ...

  5. Windows下最简洁的Linux远程连接软件

    一直在找Linux远程连接软件,都发现不够简洁,清爽.直到最近发现了 putty 这个软件.先放一张效果图! 比较清爽吧!下面介绍下他的使用! 下载地址: 官方地址:https://www.chiar ...

  6. 利用Windows PowerShell进行Linux远程连接及文件互拷贝

    利用Windows PowerShell进行Linux远程连接及文件互拷贝 简介 PowerShell属性设置 远程连接至Linux系统主机 从Windows主机拷贝文件至Linux系统主机 从Lin ...

  7. Linux系统下SSH服务启动失败故障处理

    Linux系统下SSH服务启动失败故障处理 一.系统版本 二.报错状态 三.处理方法 四.查看服务状态 一.系统版本 [root@localhost ~]# cat /etc/os-release N ...

  8. linux远程登录ssh免密码配置方法

    这篇文章主要介绍了linux远程登录ssh免密码配置方法,需要的朋友可以参考下 一.情景 公司刚上几台Linux,现在要把主机之间都能远程ssh免密码登陆. 二.原理 很简单,使用ssh-keygen ...

  9. 利用shell和iptables实现自动拒绝恶意试探连接SSH服务

    利用shell和iptables实现自动拒绝恶意试探连接SSH服务,并发邮件通知管理员. [root@ZHAOYUN ~]# cat ssh.sh  #!/bin/bash TIME=`date +& ...

最新文章

  1. Lombok!代码简洁神器还是代码“亚健康”元凶?
  2. viewpager初始化fragment没有绘制_Fragment在ViewPager中的正确应用(3)FragmentStatePagerAdapter优化了什么...
  3. SQL Server中的几个方法和Transact SQL 常用语句以及函数[个人推荐]
  4. 汇编语言-求毕达哥拉斯三角形的边
  5. 在Windows上以服务方式运行 MSOPenTech/Redis
  6. android 引用非 android 工程,Unity3D调用android方法(非插件方式)
  7. rgb sw 线主板接口在哪_光有RGB还不够,显卡竖装才更显高大上,酷冷TD500机箱装机...
  8. 向上造型和向下造型_动漫美少年漫画造型-仰视、俯视、情感表现
  9. python turtle画阴阳_Python turtle绘制阴阳太极图代码解析
  10. 强大的日志分析工具AWStats
  11. HSqlDB认识及使用
  12. FIR滤波器和IIR滤波器
  13. java ee图书管理系统_基于jsp的图书馆管理系统-JavaEE实现图书馆管理系统 - java项目源码...
  14. 基于Pipeline的CI/CD在趣头条的应用实践
  15. android 命令pm 全称 packagemanager,Android.content.pm.PackageManager--(转载)
  16. python爬取b站弹幕分析_Python爬取分析B站动漫《柯南》弹幕,从数据中分析接下来的剧情...
  17. java rtf,用Java实现RTF到PDF
  18. nim game代码java_LeetCode Nim Game
  19. LTE Attach
  20. matlab 中画箭头

热门文章

  1. Leetcode初级算法
  2. java poi 读写操作excel
  3. 谈一下我是如何从使用json-lib到投入fastjson的怀抱....
  4. configuration 配置文件解析
  5. 如何进入bios界面
  6. 如何在mysql官网下载mysql最新或者以前的版本
  7. BACnet协议栈中一个Ringbuff编程范例
  8. matplotlib :lengend图例参数(bbox_to_anchor)的使用
  9. ct伪影消除matlab代码,CT去伪影总结
  10. 南华大学的计算机专业学校排名,2019南华大学专业排名