【ssh】ubuntu服务器+本地windows主机,使用密钥对进行ssh链接

目录

  • 1、服务器配置ssh
  • 2、本地主机秘钥对
  • 3、上传公钥至服务器
  • 4、配置服务器的公钥信息
  • 5、测试连接

1、服务器配置ssh

使用的服务器系统为 ubuntu系统20.04
首先确认服务器是否已安装SSH,已安装的话会返回openssh 的相关信息,返回为空表示未安装

dpkg -l | grep openssh-server

如果没有安装,进行安装

sudo apt update
sudo apt install openssh-server

安装成功后,启动ssh服务

sudo systemctl start ssh
sudo systemctl enable ssh

允许防火墙 通过SSH连接

sudo ufw allow 22/tcp

检查是否启动成功

sudo systemctl status ssh

返回:
请添加图片描述

查看服务器的主机名hostname 和 用户名

hostname -I
ls /home/

查看 ssh 端口port,默认的端口号为22

sudo ss -tulnp | grep sshd

如果需要配置ssh的config文件,可以用vi或者nano对Config文件的内容进行修改

sudo  vi /etc/ssh/sshd_config

编辑完后按 Esc
:w 保存文件
:wq or ZZ 保存并退出
:x 保存并退出(只有当文件被修改时才保存)
:q 退出(未修改时)
:q! 强制退出不保存

或者

sudo nano /etc/ssh/sshd_config

编辑完后按
Ctrl + O 保存
屏幕底部显示 File Name to Write: [当前文件名],保持原文件名,直接按 Enter 回车,要另存为新文件,输入新文件名后按回车
Ctrl + X退出

2、本地主机秘钥对

本地主机:windows11
使用Git Bash 检查本地是否现有SSH密钥

ls -al ~/.ssh

返回:
如果看到 id_rsa (私钥) 和 id_rsa.pub (公钥),说明已有密钥对
如果没有,新增秘钥

ssh-keygen -t rsa -b 4096

输入保存路径(默认按回车使用 ~/.ssh/id_rsa)
输入密钥密码(可选但推荐,为空则直接回车)

秘钥成功生成后,会在本地用户路径C:\Users\本地用户名.ssh文件夹中看到 id_rsa和 id_rsa.pub
在这里插入图片描述

3、上传公钥至服务器

依然是本地主机 Git bash 输入

cat ~/.ssh/id_rsa.pub

输出一段以ssh-rsa开头 以 邮箱结尾的秘钥
在这里插入图片描述
复制输出的全部内容,在Ubuntu服务器上执行:

mkdir -p ~/.ssh
echo "粘贴公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

检查服务器中公钥文件是否存在

ls -l ~/.ssh/authorized_keys

检查文件中的内容

cat ~/.ssh/authorized_keys

4、配置服务器的公钥信息

打开ssh_config中关于秘钥的相关配置

sudo vi /etc/ssh/sshd_config

编辑文件,找到PubkeyAutentication 删掉前面的#号,并更改为:
请添加图片描述
保存并退出,修改后重启ssh服务:

sudo systemctl restart ssh

检查SSH服务秘钥是否修改配置成功

sudo grep -E '^PubkeyAuthentication|^AuthorizedKeysFile' /etc/ssh/sshd_config

输出:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys```

表明此时已允许密钥认证

检查秘钥的权限

ls -ld ~/.ssh && ls -l ~/.ssh/authorized_keys

应该输出

drwx------ 2 username username 4096 日期 .ssh
-rw------- 1 username username  567 日期 authorized_keys

5、测试连接

在ubuntu服务器中检查日志

sudo tail -f /var/log/auth.log

会显示log变化,不要关闭,回到本地windows主机,输入命令

ssh -i ~/.ssh/id_rsa username@服务器IP -p 端口号

在这里插入图片描述
连接成功后,服务器的log中会显示

Accepted publickey for 服务器主机名 from 本地IP port 本地端口号  

等链接信息

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

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

相关文章

Linux文件fd

文件理解 文件属性内容 打开文件:本质是进程打开文件,文件没被打开时候再磁盘上。 操作文件:本质是进程操作文件。 在操作系统内部,一定存在大量被打开的文件,会对其进行管理,每一个被打开的文件&#…

北京-4年功能测试2年空窗-报培训班学测开-第六十四天-准备面试项目(焦虑)-同学开始面试

今日产出,整理自我介绍,继续整理第一个项目,学习linux命令很焦虑啊很焦虑,很着急今天本打算结束第一个项目的,但是没能够,越说感觉越乱,让同学听我讲,同学说,要听睡着了于…

网络是如何运转的?——常见网络协议与网络分层模型

目录 基本网络协议 TCP(传输控制协议) 可靠传输:序列号确认应答重传机制 序列号(seq) 确认应答(ACK) 超时重传 三次握手与四次挥手 三次握手(建立连接) 四次挥手…

OpenAI放大招:ChatGPT学习模式上线,免费AI智能家教

目录一、背景介绍二、学习模式是什么国内直接使用AI主流模型GPT-5也会第一时间同步更新。三、主要功能特点1、互动式提示2、分层次响应3、个性化支持4、知识检查5、灵活切换四、学生如何使用学习模式1、访问方式2、适用场景3、交互过程4、使用示例五、局限性1、依赖学生自觉性2…

设计模式:享元模式 Flyweight

目录前言问题解决方案享元工厂结构代码前言 享元是一种结构型设计模式,它摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,让你能在有限的内存容量中载入更多对象。 问题 假如你希望在长时间工作后放松一下&#x…

Spring Boot容器化实战:用官方OpenJDK镜像极速启动你的应用

前言 用 Docker 打包 Java 应用,尤其是 Spring Boot,简直是开发者的超级利器。想象一下,你的程序就像勤快的外卖小哥,随时待命,跑遍任何一台机器,马上为你服务。不论是开发环境还是生产环境,Docker 都能让部署变得轻松又高效,彻底告别“环境不一致”的烦恼。 本篇文章…

【计算机网络 | 第1篇】计算机网络概述(上)

文章目录一.现代通信基础🥝二.网络、互联网、英特网🧾1.网络(Network)2.互联网(internet)3.因特网(Internet)三.计算机网络的标准定义🥝早期定义🧾物理构成视…

python语法笔记

问题解决办法 原本是个小问题,但是花了我大量时间。先说最后的解决办法:360网络急救箱搞的。一.问题描述 始终拉取失败 二.解决过程 1.登陆凭证检测,查下密码是不是不对。2.清除GIT所有数据 3.使用SSH拉取 生成密钥网站上添加密钥SSH 拉取4.G…

XTOM蓝光三维扫描仪:解锁中小尺寸复杂零件的高精度3D检测新境界

在3C消费电子行业,产品从出厂到用户手中,可能经历运输、使用中的意外跌落。据统计,超过30%的电子产品售后问题与物理冲击相关。跌落测试可模拟产品在运输、使用中意外跌落的场景,可评估其结构强度、内部组件抗冲击能力&#xff0c…

Django+celery异步:拿来即用,可移植性高

一、依赖环境 1、python解释器版本:python3.7.5 2、稳定依赖包 # Celery 核心 celery5.2.7 kombu5.2.4 billiard3.6.4.0 vine5.0.0# Redis broker backend redis4.3.6# eventlet (如果用 -P eventlet)【windows系统可以使用】 eventlet0.33.3 greenlet1.1.3# 避免…

Ubuntu18.04 LTS +RTL 8125 出现安装完系统后没有网络问题

Ubuntu18.04 LTS RTL 8125 出现安装完系统后没有网络问题问题描述最终解决方案1.下载对应的Realtek网卡驱动,使用命令lspci查看网卡信息安装网卡3.重启电脑记录过程1.内核升级方式1)下载新的内核驱动2)安装内核驱动3)重启电脑4&am…

集成电路学习:什么是ARM CortexM处理器核心

ARM Cortex-M是ARM公司专为微控制器( Microcontroller)设计的处理器核心系列,它以其高性能、低功耗和易于开发的特点,在嵌入式系统和微控制器领域得到了广泛应用。以下是关于ARM Cortex-M的详细介绍: 一、ARM Cortex-M的概述 ARM Cortex-M系列处理器是基于ARM架构的高能效…

Apache Ignite 的分布式原子类型(Atomic Types)

以下的内容是关于 Apache Ignite 的分布式原子类型(Atomic Types),主要包括 IgniteAtomicLong 和 IgniteAtomicReference。它们是 跨集群节点的“全局共享变量”,支持线程安全、原子性操作,即使多个节点同时访问也能保…

Leetcode 08 java

283. 移动零 提示 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输…

LeetCode 56 - 合并区间

思路 排序:将所有区间按起始点从小到大排序。贪心合并:初始化一个结果列表,放入第一个区间。然后遍历剩余区间,将当前区间与结果列表中的最后一个区间比较: 若重叠(当前区间起点 ≤ 结果区间终点&#xff0…

DNS 正向查找与反向查找

DNS 区域是 DNS 中基本的组织单元,为域名定义了管理和权威边界。一个 DNS 区域通常包含一系列 DNS 资源记录,包括名称到地址的映射(正向查找)和地址到名称的映射(反向查找)。这些区域对于高效管理和解析网络…

Oracle ERP FORM开发 — 新增查询条件

1 根据值来查询具体流程步骤看第2节,这里提供核心的增加查询条件的触发器代码:1.1 可完全匹配的值比如“是”,“否”,“物料”,“”汽车 等等这些可以直接通过对应的值匹配,特点就是词语,短小。…

Flutter实现列表功能

在Flutter中,可以通过ListView和ListTile等组件来实现类似Android中RecyclerView和Adapter的功能。以下是一个通用的设计架构,用于设计列表数据: 1. 定义数据模型 首先,定义一个数据模型类,用于存储列表中每一项的数据。例如: class ItemModel {final String title;fi…

2.1、Redis的单线程本质和多线程的操作

Redis的单线程本质 1. 核心单线程部分 #mermaid-svg-iFErSltthPIEsuiP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-iFErSltthPIEsuiP .error-icon{fill:#552222;}#mermaid-svg-iFErSltthPIEsuiP .error-text{fil…

文件权限值的表示方法

文章目录字符表示方法8 进制数值表示方法字符表示方法 Linux表示说明Linux表示说明r--只读-w-仅可写--x仅可执行rw-可读可写-wx可写可执行r-x可读可执行rwx可读可写可执行---无权限 8 进制数值表示方法 权限符号8进制2进制r4100w2010x1001rw6110rx5101wx3011rwx7111---0000