如何通过 SSH 配置和部署项目:详细指南

以下是关于 SSH 配置和部署的详细博文,可以帮助用户快速配置服务器和本地机器之间的 SSH 连接并进行项目部署:


如何通过 SSH 配置和部署项目:详细指南

在远程管理服务器或部署项目时,SSH(Secure Shell)是非常常用且安全的工具。通过 SSH,可以加密通信、验证身份并执行远程操作。本篇博文将详细介绍如何配置 SSH 并通过它进行 Python 项目的远程部署。

什么是 SSH?

SSH 是一种加密协议,允许我们在不安全的网络上进行安全通信。通常,它用于通过命令行远程管理 Linux 或 Unix 服务器。

主要内容概览:

  1. 配置本地机器的 SSH 密钥。
  2. 将公钥上传至服务器。
  3. 配置服务器上的 SSH 以确保安全性。
  4. 使用 Fabric 进行自动化项目部署。

一、本地机器配置 SSH

在本地机器上,我们首先需要生成一个 SSH 密钥对。密钥对由两个部分组成:一个是公钥(public key),一个是私钥(private key)。我们会将公钥上传到服务器,而私钥保存在本地电脑,用于身份验证。

1.1 生成 SSH 密钥对

在本地终端中使用以下命令生成新的 SSH 密钥对:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

命令中的参数解释:

  • -t rsa:指定生成 RSA 密钥。
  • -b 4096:密钥长度为 4096 位,保证安全性。
  • -C "your_email@example.com":为密钥添加一个注释,一般是你的邮箱地址。

执行命令后,系统会提示你输入保存路径,默认路径是 ~/.ssh/id_rsa。接着,系统会让你选择是否为密钥设置密码,这一步可以按需操作。

1.2 上传公钥到服务器

生成完密钥后,我们需要将公钥上传到服务器中。可以通过以下命令来完成:

ssh-copy-id username@server_ip

username 是你在服务器上的登录用户,server_ip 是服务器的 IP 地址。这个命令会将本地的公钥自动复制到远程服务器的 ~/.ssh/authorized_keys 文件中。

如果 ssh-copy-id 命令不可用,可以手动执行以下命令:

cat ~/.ssh/id_rsa.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

1.3 测试 SSH 连接

配置完成后,使用以下命令测试 SSH 连接:

ssh username@server_ip

如果一切配置正确,你应该能够通过 SSH 无密码登录到服务器。

二、服务器端配置 SSH

在服务器端,我们需要确保 SSH 服务正常运行,并配置相应的安全措施。

2.1 检查并启动 SSH 服务

使用以下命令检查 SSH 服务的状态,并确保其已启动:

sudo systemctl status ssh
sudo systemctl start ssh
sudo systemctl enable ssh

2.2 配置 SSH 服务器

编辑 SSH 配置文件 /etc/ssh/sshd_config,根据需求进行安全设置。使用以下命令编辑配置文件:

sudo nano /etc/ssh/sshd_config

检查并修改以下关键配置:

  • 禁止密码登录(推荐,只允许公钥认证):

    PasswordAuthentication no
    
  • 启用公钥认证

    PubkeyAuthentication yes
    
  • 监听所有 IP 地址(确保远程访问)

    ListenAddress 0.0.0.0
    

编辑完成后,重启 SSH 服务:

sudo systemctl restart ssh

2.3 配置防火墙

确保服务器的防火墙允许 SSH 访问。使用以下命令允许 SSH 通过防火墙:

sudo ufw allow OpenSSH
sudo ufw enable

如果你使用的是 iptables,可以运行以下命令:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

2.4 禁止 root 用户通过 SSH 登录(推荐)

为了提高安全性,可以禁止 root 用户直接通过 SSH 登录。编辑 sshd_config 文件,设置:

PermitRootLogin no

并重启 SSH 服务:

sudo systemctl restart ssh

三、自动化部署工具推荐:Fabric

Fabric 是一个轻量级的自动化工具,能够通过 SSH 实现自动化远程操作,非常适合用来部署 Python 项目。

3.1 安装 Fabric

首先,在本地机器上安装 Fabric:

pip install fabric

3.2 Fabric 配置示例

创建 fabfile.py 文件,定义自动化任务。以下是一个简单的部署示例:

from fabric import Connection# 定义服务器连接信息
def deploy():c = Connection("username@server_ip")# 拉取最新代码c.run("cd /path/to/project && git pull")# 安装依赖c.run("cd /path/to/project && source venv/bin/activate && pip install -r requirements.txt")# 重启服务c.run("sudo systemctl restart my_project")

3.3 执行 Fabric 部署

在本地终端中执行以下命令,开始自动化部署:

fab deploy

四、测试 SSH 连接和部署

完成配置后,你可以通过以下命令测试 SSH 连接并进行部署:

ssh username@server_ip
fab deploy

这样就能确保 SSH 已正确配置,并可以通过 Fabric 自动化部署项目。


通过以上配置和步骤,你可以轻松完成 SSH 连接并部署 Python 项目,无论是本地开发环境还是生产环境,都能保证安全和高效的操作。如果你有更复杂的需求,可以进一步探索 Fabric 或 Ansible 的高级功能。

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

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

相关文章

分子动力学工具篇二:Sobtop的安装与使用

文章目录 1. Sobtop的介绍1. Sobtop 的功能和特点2.主要应用场景 2.3.常见问题及解决方法 1. Sobtop的介绍 Sobtop 是一个用于自动生成分子拓扑文件的工具,特别是为 GROMACS 分子动力学模拟准备拓扑结构和参数。它的设计目标是通过自动化过程生成小分子、聚合物或其…

msvcp140.dll0丢失的解决方法,总结6种靠谱的解决方法

再使用计算机的过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp140.dll丢失”。这个问题可能会影响到我们的正常使用,因此需要及时解决。经过一段时间的学习和实践,我总结了以下六种靠谱的解决方法,希望对大家…

Flask-WTF的使用

组织一个 Flask 项目通常需要遵循一定的结构,以便代码清晰、可维护。下面是一个典型的 Flask 项目结构: my_flask_app/ │ ├── app/ │ ├── __init__.py │ ├── models.py │ ├── views.py │ ├── forms.py │ ├── templat…

【HTTP】构造HTTP请求和状态码

状态码 用于响应中,表示响应的结果如何 正确?错误?什么原因? HTTP 中的状态码都是标准约定好的 200 OK 成功了,一切顺利 在抓包到的响应中 404 Not Found 访问的资源(URL 中的路径)没找…

数据结构之线性表——LeetCode:707. 设计链表,206. 反转链表,92. 反转链表 II

707. 设计链表 题目描述 707. 设计链表 你可以选择使用单链表或者双链表,设计并实现自己的链表。 单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。 如果是双向链表,则…

小程序——生命周期

文章目录 运行机制更新机制生命周期介绍应用级别生命周期页面级别生命周期组件生命周期生命周期两个细节补充说明总结 运行机制 用一张图简要概述一下小程序的运行机制 冷启动与热启动: 小程序启动可以分为两种情况,一种是冷启动,一种是热…

低代码门户技术:构建高效应用的全新方式

什么是低代码门户技术? 低代码门户技术是一种利用低代码平台构建企业门户网站或应用的技术。门户通常是企业内部和外部用户访问信息和应用的集中平台。低代码门户技术通过图形化界面和预置组件,允许用户快速搭建和定制这些门户平台,而无需深…

CefSharp_Vue交互(Element UI)_WinFormWeb应用(3)---通过页面锁屏和关机(含示例代码)

一、预览 实现功能:通过vue标题栏按钮锁屏和关机 1.1 预览 1.2 代码 锁屏代码csharp LockWorkStation() 关机代码chsharp 注意vue代码参数和此参数一致(0/1/2) 方法ExitWindowsEx()

mac电脑打不开rar文件怎么办 rar文件怎么转换成zip并打开

rar文件是一种常见的压缩文件格式,它可以将多个文件或文件夹打包成一个文件,从而节省空间和方便传输。但是,mac系统并没有自带的工具可以直接打开或解压rar文件,那么,mac用户该如何处理rar文件呢? 一、mac电…

初步认识C++模版

前言 在C语言中,我们知道函数的形参需要指定类型,但是在C中,我们可以模版实现各种类型参数的通用函数。 1. 泛型编程 我们通过函数重载实现多种类型的同一作用的函数。如交换函数: void Swap(int& left, int& right) …

微信getUserProfile不弹出授权框

当我们在微信小程序开发工具中想要使用getUserProfile来获取个人信息的时候,会发现不弹出授权框,这是什么原因呢? 早在2022年的小程序官方公告中就已经明确给出了小程序用户头像昵称获取规则调整公告 因此如果还想继续使用getUserProfile的弹…

功能测试干了三年,快要废了。。。

8年前刚进入IT行业,到现在学习软件测试的人越来越多,所以在这我想结合自己的一些看法给大家提一些建议。 最近聊到软件测试的行业内卷,越来越多的转行和大学生进入测试行业,导致软件测试已经饱和了,想要获得更好的待遇…

2024华为杯研赛E题保姆级教程思路分析

E题题目:高速公路应急车道紧急启用模型 今年的E题设计到图像/视频处理,实际上,E题的难度相对来说较低,大家不用畏惧视频的处理,被这个吓到。实际上,这个不难,解决了视频的处理问题,…

2024/9/21 408 20题

a b 58-130-180-199-42-15:c d a 184-182-187-176-19941 c d a a c b d c a c b c c c

MySQL基础基础篇 - SQL

01 SQL通用语法 02 SQL分类 03 DDL语句 04 DML语句 05 DQL语句(单表查询) 05_01 学习总览 05_02 基本查询 05_03 条件查询 【应用实例】: 05_04 聚合函数 05_05 分组查询 05_06 排序查询 05_07 分页查询 【boss题目】: 05_08 执行顺序 06 DCL语句 【概…

直接插入排序(C语言实现)

目录 1.直接插入排序介绍 2.实现思路 3.动图展示 4.代码实现 (升序) 单趟排序实现 单趟排序代码 直接插入排序函数 5.代码测试 6.时空复杂度分析 时间复杂度O(N^2) 空间复杂度O(1) 1.直接插入排序介绍 插入排序,又叫直接插入排序。…

61. 旋转链表【 力扣(LeetCode) 】

零、原题链接 61. 旋转链表 一、题目描述 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 二、测试用例 示例 1: 输入:head [1,2,3,4,5], k 2 输出:[4,5,1,2,3]示例 2: 输入…

AI小项目4-用Pytorch从头实现Transformer(详细注解)

目录 一、前期准备工作学习如何读AI论文读Transformer原始论文用Pytorch从头实现Transformer 二、我的完整代码实现1.导入库2.基本组件创建词嵌入位置嵌入自注意力 3.编码器4.解码器5.完整架构6.简单测试一下代码创建模型和准备简单的训练数据训练一次(前向传播&…

Istio下载及安装

Istio 是一个开源的服务网格,用于连接、管理和保护微服务。以下是下载并安装 Istio 的步骤。 官网文档:https://istio.io/latest/zh/docs/setup/getting-started/ 下载 Istio 前往Istio 发布页面下载适用于您的操作系统的安装文件,或者自动…

Python数据分析与可视化(Python绘图详解)

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…