Python之Web开发中级教程----搭建SSH环境

Python之Web开发中级教程----搭建SSH环境

SSH 的全称是 “安全的 Shell(Secure Shell)”,它功能强大、效率高,这个主流的网络协议用于在两个远程终端之间建立连接。让我们不要忘记它名称的“安全”部分,SSH 会加密所有的通信流量,以防止如劫持、窃听等攻击,同时提供不同的身份认证方式和无数个配置选项。

SSH 协议基于客户端-服务器(server-client)(CS)架构。“服务器(Server)”允许“客户端(Client)”通过通信通道进行连接。该信道是经过加密的,信息交换通过 SSH 公私钥进行管理。

在 Ubuntu 系统中,开启 SSH 服务可以让远程用户通过 SSH 安全地访问服务器。下面是开启 SSH 的步骤:

  • 1、安装openssh-server

注意,在安装新的包或者软件前,要更新你的 Ubuntu 系统,以确保运行的是最新版本的程序。

Sudo apt-get update

sudo apt-get install openssh-server

如果SSH服务没有启动,则执行

Sudo service ssh start

禁用SSH服务的命令:sudo systemctl disable

启用SSH服务的命令:sudo systemctl enable

  • 2、检查服务器状态

service ssh status

你还可以使用 systemctl 命令:

sudo systemctl status ssh

如果你的结果中 SSH 服务没有运行,使用这个命令运行它:

sudo systemctl enable --now ssh

3、允许SSH通过防火墙

Ubuntu 带有名为 UFW(简单的防火墙(Uncomplicated Firewall))的防火墙,这是管理网络规则的 iptables 的一个接口。如果启动了防火墙,它可能会阻止你连接服务器。

想要配置 UFW 允许你的接入,你需要运行如下命令:

sudo ufw allow ssh

UFW 的运行状态可以通过运行 sudo ufw status 来检查。

现在,我们的 SSH 服务器已经开始运行了,在等待来自客户端的连接。

注:用命令开启防火墙:sudo ufw enable

    用命令关闭防火墙:sudo ufw disable

用命令重启防火墙:sudo ufw reload

用查看防火墙版本:sudo ufw version

默认允许外部访问本机:sudo ufw default allow

默认拒绝外部访问本机:sudo ufw default deny

允许外部访问53端口:sudo ufw allow 53

查看53端口的监听状态:sudo netstat -tunlp | grep 53

  • 4、Ifconfig 查看IP

telnet 127.0.0.1 22(127.0.0.1是本地地址,22是SSH专属的端口号)

二、SSH远程连接

环境准备:Windows10系统作为本地机器,Ubuntu系统作为远程机器,目的从Windows SSH远程链接Ubuntu系统。

两种方法链接:

第一种、密码认证方式SSH远程连接

缺点:每次连接都需要输入密码。

在Windows中打开cmd.exe

执行结果:

第二种、基于公钥SSH远程连接

原理:在本地机器上生成一对公钥和私钥,然后手动把公钥上传到远程服务器。这样每次登录时,远程主机会向用户发送一段随机字符串,而用户会用自己的私钥对这段随机字符串进行加密,然后把加密后的字符串发送给远程主机,远程主机会用用户的公钥对这段字符串进行解密,如果解密后的字符串和远程主机发送的随机字符串一致,那么就认为用户是合法的,允许登录。

SSH 支持多种用于身份验证密钥的公钥算法, 包括 RSA、DSA、ECDSA 和 ED25519 等,其中 RSA 算法是最常用的,因为它是 SSH 协议的默认算法,所以我们这里以 RSA 算法为例来生成密钥,并配置免密码远程连接。

ssh-keygen 是为 SSH 创建新的身份验证密钥对的工具。此类密钥对用于自动登录、单点登录和验证主机,常用参数定义如下:-t 参数指定密钥类型;-b 参数指定密钥长度

步骤:

1、生成秘钥对

在Windows中打开cmd.exe,执行ssh-keygen -t rsa -C gocntest

  • 2、复制公钥

在Windows中找到保存私钥的路径,将同目录下的公钥拷贝到ubuntu系统中

  • 3、将公钥文件拷贝到ubuntu系统中

我采用将id_rsa.pub文件放在ISO中,加载在虚拟机的CD-ROM中。在Ubuntu系统中读出来的CD-ROM如下图:

  • 4、将公钥中的内容 复制粘贴到.ssh/authorized_keys文件中

在Ubuntu的终端中,执行:cat [拷贝过来的公钥文件]

进入/home/go/.ssh/目录下

执行gedit authorized_keys

  • 4、在windows系统中,远程连接Ubuntu

Ubuntu系统中执行ifconfig查看IP地址

Windows系统中执行远程连接命令:

ssh-keygen命令参数详解

-b BITS

指定密钥长度

-e

读取私有或公共 OpenSSH 密钥文件并以 -m 选项指定的格式之一将密钥打印到标准输出。

-C

添加注释

-f FILENAME

指定用来保存密钥的文件名

-i

以 -m 选项指定的格式读取未加密的私钥(或公钥)文件,并将 OpenSSH 兼容的私钥(或公钥)打印到 stdout。

-l

显示公钥文件的指纹数据

-m KEY_FORMAT

为 -i(导入)或 -e(导出)转换选项指定密钥格式。支持的密钥格式为:“RFC4716”(RFC 4716/SSH2 公钥或私钥)、“PKCS8”(PEM PKCS8 公钥)或“PEM”(PEM 公钥)。 默认转换格式为“RFC4716”。

-N

提供一个新密语

-P PASSPHRASE

提供(旧)密语

-q

静默模式

-t

指定要创建的密钥类型。可能的值为“dsa”、“ecdsa”、“ecdsa-sk”、“ed25519”、“ed25519-sk”或“rsa”。

-y

从 OpenSSH 格式的私钥导出公钥

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

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

相关文章

详解float函数类型转换

函数描述 float([x]) 函数将数字或数字的字符串表示形式转换为与它等效的有符号浮点数。如果参数x是一个字符串(十进制表示的数字串),数字前面可以添加符号来表示正数,或负数。符号和数字之间不能出现空格,但是符号前…

spring-jpa

一、介绍 1.1ORM 1.2 Java Persistence API 放在javaee版本 优点 支持持久化复杂的Java对象,简化Java应用的对象持久化开发支持使用JPQL语言进行复杂的数据查询使用简单,支持使用注解定义对象关系表之间的映射规范标准化,由Java官 方统一规…

两天学会微服务网关Gateway-Gateway简介

锋哥原创的微服务网关Gateway视频教程: Gateway微服务网关视频教程(无废话版)_哔哩哔哩_bilibiliGateway微服务网关视频教程(无废话版)共计17条视频,包括:1_Gateway简介、2_Gateway工作原理、3…

Vue2+3

vue相关介绍 Vue的两种使用方式: 1、vue核心包开发 场景:局部模块改造 2、vue核心包&vue插件工程化开发 场景:整站开发 概念:vue是用于构建用户界面的渐进式框架 创建vue实例 创建Vue实例,初始化渲染步骤&am…

DAWG库下载出现的问题

今天配置一些环境出现了报错需要下载DAWG-0.8.0-cp38-cp38-win_amd64, PyPi官网https://pypi.org/project/DAWG/#files 只找到了mac版本,没发现windows版本 于是找到了非官方网址: https://www.lfd.uci.edu/~gohlke/pythonlibs/#dawg 下载DA…

字节后端实习 一面凉经

心脏和字节永远都在跳动 深圳还有没有大厂招后端日常实习生啊,求捞~(boss小公司也不理我) 很纠结要不要干脆直接面暑期实习,又怕因为没有后端实习经历,面不到大厂实习。死锁了

专访|云安全攻防:从理论到应用的全面探索

2023年11月,美国核研究实验室(INL)遭遇数据泄露。同年10月,索尼的员工数据在MOVEit攻击事件中被泄露。2024年2月,某知名制造商因云存储服务器的配置错误导致了敏感数据泄露。 这些事件表示企业必须重视云安全建设&…

前端性能优化 | CDN缓存

前言 CDN(Content Delivery Network)是一种分布式的网络架构,通过在全球各地部署节点服务器来快速传输和分发网络内容。CDN的主要目标是提供快速、可靠的内容传输,以提升用户体验。 本文主要从以下方面讲解CDN 什么是CDNCDN的作…

npm ERR! code ERR_INVALID_URL报错解决

这个报错是URL错误&#xff0c;要排除两个点 npm的registry有没有搞错&#xff0c;也就是npm源有没有搞错 打开文件C:/User/<用户名>/.npmrc查看npm设置查看registry的设置有没有格式错误正确设置格式&#xff1a;registry"https://registry.npmmirror.com"或…

Mysql案例之GROUP_CONCAT函数详解

Hello&#xff0c;大家好&#xff0c;我是灰小猿&#xff0c;一个超会写bug的程序员&#xff01; 今天这篇文章记录一个最近开发中遇到的mysql实战场景&#xff0c;觉得还挺典型的&#xff0c;就在此做一下记录。 先看一下举例场景&#xff1a; mysql中学生表与学科表通过关…

数据库-ODBC操作

承接Qt/C软件开发项目&#xff0c;高质量交付&#xff0c;灵活沟通&#xff0c;长期维护支持。需求所寻&#xff0c;技术正适&#xff0c;共创完美&#xff0c;欢迎私信联系&#xff01; 一、ODBC 数据源配置 打开ODBC数据源管理器&#xff1a; 在Windows搜索栏中键入“ODBC数…

PTA L2-011 玩转二叉树

给定一棵二叉树的中序遍历和前序遍历&#xff0c;请你先将树做个镜面反转&#xff0c;再输出反转后的层序遍历的序列。所谓镜面反转&#xff0c;是指将所有非叶结点的左右孩子对换。这里假设键值都是互不相等的正整数。 输入格式&#xff1a; 输入第一行给出一个正整数N&…