安装、配置和启动 ssh 服务,实现远程连接服务器

SSH远程连接服务详解 详细介绍远程登录连接,概念,基于口令的认证;基于秘钥认证,各种免密登录实例详解 阅读详情
AI摘要

本文介绍在 Windows 11 本地计算机和 Ubuntu 22.04 远程服务器环境下,安装、配置和启动 SSH 服务以实现远程连接。涵盖 SSH 协议介绍、工具说明、安装启动、服务器配置、防火墙设置,还提供直接连接和密钥连接方法,以及连接失败的解决参考。

演示环境

  • 本地计算机系统:Windows 11
  • 远程服务器系统:Ubuntu 22.04

什么是 SSH

  • SSH(Secure Shell)是一种加密的网络协议,主要用于安全地远程登录和管理服务器或其他网络设备。

  • 它通过加密通信通道保护数据传输,防止中间人攻击和数据泄露,是替代不安全的 Telnet、FTP 等协议的常用方案。

工具说明

  • 服务器端(被连接端,例如本例中的 Ubuntu):需要安装并运行 SSH 服务(如 OpenSSH Server)

  • 客户端(连接端,例如本例中的 Windows):只需安装 SSH 客户端工具即可(如 FinalShell 等)

  • 由于 Win10 及以上版本内置 OpenSSH 客户端,所以,你可以选择下载 FinalShell 等 OpenSSH 客户端工具与服务器连接;也可以直接使用 Windows 内置的 OpenSSH 客户端工具与服务器连接(在 PowerShell 窗口执行 ssh 命令)

安装与启动 ssh

接下来,我们将在 Ubuntu 22.04 上安装 SSH 服务。本例中采用的是 OpenSSH

  • 首先,我们先更新软件包,确保是最新状态:
sudo apt update
  • 接着,我们安装 SSH 服务器:
sudo apt install openssh-server
  • 安装完成后,SSH 服务器会自动启动,我们使用以下命令可以检查它的启动状态:
sudo systemctl status ssh
  • 如果 SSH 服务器没有启动,我们就启动它:
sudo systemctl start ssh
  • 现在,我们再来看看 SSH 服务器是否成功启动:
sudo systemctl status ssh
  • 在启动 SSH 服务器后,我们要确保系统重启了,SSH 服务也能自动启动:
sudo systemctl enable ssh

配置 SSH 服务器

如果你想让连接更安全,你可能需要进行以下配置,当然它是可选的,你不操作也没关系

  • 在修改配置文件前,最好先备份它:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  • 接着,我们通过 Vim 工具,去编辑这个配置文件:
sudo vim /etc/ssh/sshd_config

填写下面内容,或者删除 “#” 这个注释符号,就是在编写配置了

  1. 修改默认端口
Port 6660   # 自定义端口,避免暴力破解
  1. 多端口监听
Port 22    # 保留默认端口(谨慎!)
Port 6660  # 新增端口
Port 6670  # 新增端口
  1. 禁止 root 直接登录(强烈推荐!)
PermitRootLogin no   # 改为 no,强制用普通用户登录后 sudo
  1. 禁止通过密码认证(需要配合"密钥认证"一起使用)
PasswordAuthentication no    # 注意!请先确保密钥认证可用,再关闭此项,不然可能无法连接服务器!
  1. 启用公钥认证(默认已开启)
PubkeyAuthentication yes
  1. 指定公钥文件路径(默认即可,如需自定义可以修改)
AuthorizedKeysFile  .ssh/authorized_keys    # 支持多路径,如 .ssh/keys/*.pub
  1. 限制登录失败尝试次数(推荐,可以防止暴力破解)
MaxAuthTries 3    # 失败三次后断开连接
  1. 限制空闲超时(防止会话劫持)
ClientAliveInterval 600   # 每 600 秒(10 分钟)检测客户端存活
ClientAliveCountMax 3     # 三次无响应后断开
  1. 添加白名单,允许特定用户登录(多个用户请用空格进行分隔)
AllowUsers user1 user2    # 仅 user1、user2 可登录
  1. 允许特定 IP 段访问(比如,仅允许 192.168.1.0/24 网段)
AllowGroups ssh-users 
# 配合用户组(需先创建组并添加用户)
# 或直接指定 IP(需安装 ufw 并配置,见防火墙部分)
  1. 禁用空密码(默认已禁用)
PermitEmptyPasswords no

12.禁止密码和密钥混用(可选,强制密钥认证)

AuthenticationMethods publickey  # 仅允许密钥认证

让配置生效

如果你没有进行配置,可以跳到下一步

  • 在你配置完成后,你需要重新启动 SSH 服务器
sudo systemctl restart sshd
  • 如果你修改了端口,还需要同步防火墙,详情见"配置防火墙"

配置防火墙

不论你是否进行了 SSH 服务器的配置,我都建议你看看你的防火墙,进行防火墙的配置;在 Ubuntu 中,防火墙通常是 ufw,即:Uncomplicated Firewall,简单防火墙

  • 防火墙能够阻挡连接,如果 SSH 被阻挡了,我们就无法连接,因此我们要告诉防火墙,让 SSH 通过。

  • 对于没有进行 SSH 配置的,请执行:

sudo ufw allow ssh

# 等价于:sudo ufw allow 22/tcp
  • 而对于修改过 SSH “端口” 的配置(比如修改端口为6660),需要执行:
sudo ufw allow 6660/tcp
  • 如果想验证规则是否生效,可以执行:
sudo ufw status numbered

# 显示带编号的规则列表(IPv4 和 IPv6 分开)
  • 如果你想删除某些防火墙规则,比如,22端口,你可以:
sudo ufw delete allow 22/tcp  
  • 当然,按编号删除规则,是最精准的,推荐这种方法:
sudo ufw delete 1  # 删除编号 1 的规则
  • 批量删除规则(如编号 1 和 2),执行:
sudo ufw delete 1 2    # 空格分隔多个编号
  • 允许 SSH 通过防火墙后,请查看系统上的防火墙是否已启用:
sudo ufw status
  • 如果防火墙尚未启用,您会看到输出 Status: inactive,表明防火墙当前处于禁用状态;这时,请你启用防火墙(注意!这将会与服务器断开连接,请一定要确保你的 SSH 连接可用)
sudo ufw enable
  • 其他防火墙配置,可以自行选择
  • 允许局域网 IP 访问(示例:192.168.1.0/24 网段)
sudo ufw allow from 192.168.1.0/24 to any port 22  # 默认端口
# 或自定义端口:
sudo ufw allow from 192.168.1.0/24 to any port 6660/tcp
  • 限制单 IP 访问(如办公电脑 IP)
sudo ufw allow from 192.168.1.100 to any port 6660/tcp
  • 组合规则(允许 IP 且限速防暴力破解)
sudo ufw limit from 192.168.1.0/24 to any port 5090/tcp
# "limit" 会自动添加速率限制(默认每分钟 60 次)
  • 封禁单个 IP 地址(如,192.168.1.101)
sudo ufw deny from 192.168.1.101
  • 封禁 IP 地址段(如 192.168.1.0/24)
sudo ufw deny from 192.168.1.0/24

直接连接

  • 对于没有进行 SSH 服务器配置的朋友,可以打开 PowerShell 命令窗口,输入
ssh xiaoming@192.168.25.26
# 上面的信息要换成你自己的,格式如下:
# ssh  以什么身份登录服务器@服务器IP地址
  • 然后输入密码即可

  • 或者你也可以使用其他的 SSH 客户端工具,比如 Finalshell、PuTTY等,网上教程很多,这里就不作过多介绍了。

密钥连接

  • 对于已经更改 SSH 服务器端口(比如改为了6660端口),同时又禁用了密码登录改为密钥连接的,可以参考下面教程。

  • 通过 PowerShell 内置的 SSH 客户端生成密钥

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_4096 -N ""
  • 获取密钥内容,通过 PowerShell 执行命令后(注意不是cmd),复制其输出的内容
cat ~/.ssh/id_rsa_4096.pub
  • 将复制的内容,上传到服务器的 “你要登录的用户的主目录下的 .ssh/authorized_keys文件中”(如果你修改了默认路径,就设置为你的路径)

  • 检查该用户主目录下是否存在 .ssh 目录,若不存在则创建

mkdir -p ~/.ssh
  • 创建 authorized_keys 文件
vim authorized_keys
  • 把复制的内容,放进去即可(自己想办法)

  • 为保证安全性,需设置 .ssh 目录的权限为 700,设置 authorized_keys 文件的权限为 600

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
  • 打开 PowerShell 命令窗口,连接到 SSH 6660端口(注意:-i 参数接收的是id_rsa_4096私钥,而不是公钥)
ssh -i "~\.ssh\id_rsa_4096" -p 6660 xiaoming@192.168.24.25

# ssg -i "本地私钥文件的地址" -p 端口号 服务器用户名@服务器地址
  • 使用类似 FinalShell 等 SSH 客户端工具,原理也是和用 PowerShell 内置的 SSH 客户端工具差不多,这里就不赘述了。

连接失败

PyCharm链接远程服务器(linux)跑深度学习,使用SSH服务,及配置解释器详解,图文并茂超详细解释配置与教程,包括配置远程环境2024年最新教程。 阅读详情

相关推荐

vscode使用插件remote-ssh远程连接服务器

生成密钥对,是为了免密登录?我直接使用的git配置的时候的密钥对。用上了公司百万级的服务器 😆 😆 😆 😆。安装插件进行连接就行,

fb_941219的博客 4252

SSH远程登录与控制

每次使用sshd登录到其他主机,双方都会生成一个文件known_hosts把对方主机的公钥在.ssh/known_hosts文件里。⑦最终:双方各持有三个密钥,分别为自己的一对公钥、私钥、以及对方的公钥,之后的所有的通讯都会被加密。⑥服务端用解密后的Res或者是会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)④客户端用自己的公钥或会话ID,计算出一个值Res,并用服务端的公钥加密。②服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)服务端主程序:/usr/sbin/sshd。

MCB134的博客 3万+

vscode连接远程服务器并调试程序

摘要:本文介绍了使用VSCode的Remote-SSH插件连接远程服务器的方法。首先安装插件并配置服务器信息(主机IP、用户名、端口),建议选择"always"选项强制下载VSCodeServer到本地再传输到远程主机。连接成功后,详细说明了两种Python调试方式:命令行启动(python -m pdb)和代码插入断点(pdb.set_trace()),并列举了常用的调试命令(next、break、print等)及其功能,帮助开发者高效进行远程代码调试。

weixin_53333436的博客 1060

ssh远程连接服务器

ssh远程连接服务器

qq_50589028的博客 1万+

Linux下的远程连接SSH服务

在嵌入式Linux系统中,配置和使用SSH服务可以方便地进行远程连接和操作。本文将介绍如何在嵌入式Linux系统中配置和使用SSH服务,并提供相应的源代码示例。通过配置和使用SSH服务,我们可以在嵌入式Linux系统中实现远程连接和操作。通过配置和使用SSH服务,我们可以在嵌入式Linux系统中实现远程连接和操作。现在,我们可以使用任何支持SSH协议的终端工具来连接到嵌入式Linux系统上的SSH服务器。现在,我们可以使用任何支持SSH协议的终端工具来连接到嵌入式Linux系统上的SSH服务器。

WangWEel的博客 156

SSH中常见的几种异常

SSH项目开发中几种常见的异常和解决方法

VS Code SSH远程连接

输入SSH命令后,VS Code会提示选择存放SSH主机配置信息的文件位置,建议选择默认的SSH配置文件,通常是“~/.ssh/config”(Windows系统为“C:\Users\用户名.ssh\config”)。:点击左下角的绿色图标,打开Remote-SSH的操作菜单,选择“Connect to Host”,即“连接到主机”。:当连接成功后,VS Code左下角会显示远程服务器的名称,此时即可像操作本地文件一样编辑远程服务器上的代码。:VS Code会要求输入远程服务器的SSH命令,格式为“

weixin_46158019的博客 1204

J-SCOPE实战:除了看波形,如何用它和JLink-RTT模式高效调试你的STM32变量?

本文详细介绍了如何利用J-SCOPE和JLink-RTT模式高效调试STM32变量,实现实时数据可视化。通过对比HSS和RTT模式的优劣,提供固件端配置、J-SCOPE设置及实战应用案例,帮助开发者快速掌握这一高效调试技术,特别适用于电机控制、传感器融合等需要实时监控的场景。

weixin_29159613的博客 444

Ubuntu系统上安装和启动SSH服务

通过以上步骤,你应该能够成功安装、启动并配置SSH服务,以便可以从远程计算机连接到你的Ubuntu系统。如果有任何问题,请检查日志文件或错误信息以进一步诊断。从另一台计算机尝试连接到你的Ubuntu机器,确保SSH服务工作正常。如果你的系统启用了UFW(Uncomplicated Firewall),你需要允许SSH连接。默认情况下,UFW会阻止所有传入连接,除非你特别允许。是你在Ubuntu机器上的用户名。

sun_0228的博客 1793

MacOS上如何修改jupyter book的默认打开地址以及如何复制文件路径

记点笔记,才换新系统小半年,还是不太熟悉,所以记录一下笔记,感觉之后也会用到,希望能帮到你们。主要内容是:修改jupyter的默认地址以及复制文件路径。

魔仙的博客 1978

域控制器迁移后NETLOGON共享丢失的修复指南

本文详细解析了在Windows域控制器迁移后NETLOGON共享丢失的故障现象与修复方法。通过使用Dcdiag工具诊断,定位注册表键值SysVolReady异常及SCRIPTS目录缺失等核心原因,并提供了修改注册表、创建目录、重启Netlogon服务等逐步修复指南,帮助管理员快速恢复域用户登录功能,确保业务连续性。

weixin_29245767的博客 88

Ubtuntu下安装SSH,配置远程连接。

首先我们先下载资源。 百度云链接:链接:https://pan.baidu.com/s/1Nm9qbDaBRfcTDjkeDul7Og   提取码:gpoi 系统页面下,我这里已经连接好了,所以演示就先这样演示。 输入"sudo apt-get update"-->回车-->"输入当前登录用户的管理员密码"-->回车,就可以了。 输入"sudo apt-get i...

Fuzz 795

【Unity】网络游戏实战(序章)MMORPG大型多人在线角色扮演 + 中国象棋联网对战

本系列会基于两种常见的网络游戏类型(MMORPG大型多人在线角色扮演和多人棋牌),从零开始实现网络游戏开发中的大多数环节。【杜绝代码炫技】本系列杜绝代码炫技,摈弃那些高深的设计模式,一切业务逻辑的实现代码追求浅显易懂,即便是网络编程菜鸟,也能循序渐进掌握本系列的核心要点。【授之鱼也授之渔】与一些开源库那样只授予源码不同,本系列还会基于各个技术要点展开详解,并结合切实的可直接运行的Demo,授之鱼更授之渔。

神码编程 1960

Deepin系统安装SSH服务

文章目录SSH 服务SSH 服务器的安装:SSH 客户端的安装:检查SSH服务是否已安装看22端口有没有在监听重新启动下ssh服务设置SSH服务为开机启动 SSH 服务 SSH 服务器的安装: sudo apt-get install openssh-server SSH 客户端的安装: sudo apt-get install openssh-client 检查SSH服务是否已安装 ps -e ...

mirana的专栏 1103

Python 爬虫实战:爬取国家统计局公开数据

国家统计局作为权威的宏观经济数据发布机构,汇聚了人口、GDP、就业、产业经济等多维度的核心统计数据,是开展经济研究、政策分析、行业洞察的重要数据支撑。相较于商业数据平台,国家统计局的公开数据具备权威性、全面性和时效性等特点,但部分数据分散在不同栏目且缺乏结构化下载渠道。本文基于 Python 爬虫技术,系统讲解国家统计局公开数据的爬取方法,重点解决静态表格解析、分页数据抓取、数据结构化转换等问题,同时严格遵循政府网站数据使用规范,为科研、教学等场景提供合规的数据获取方案。本文以国家统计局官网(

2503_91057718的博客 1818

【硬件】LT3763中文手册

1)精确控制输入和输出电流;2) 3000:1真彩色PWM™调光;3) ±1.5%电压调节精度;4) ±6%电流调节精度;5)6V至60 V输入电压范围;6)宽输出范围最高可达55V;7)<2µA关断电流;8)用于负载电流热控制的控制引脚;9)输入和输出电流监控和限制;10)开路、短路和C/10故障检测;11)适用于LED应用的PWM驱动器输出;12)热增强型28引脚FE封装。

qq_39200110的博客 489

vscode连接远程服务器中的docker镜像

通过vscode连接远程服务器中的docker镜像 由于远程炼丹太过不便,查阅资料的质量良莠不齐,无法使用,通过个人不断尝试才得以使用vscode连接远程docker镜像成功。因此整理此篇文档,用于描述通过vscode连接到远程服务器中正在运行的docker镜像,若此篇文章对你有所帮助,欢迎点赞评论,转发须经个人同意 Step1: 在Docker中安装SSH docker run -it -p 12000:12005 --net=host --privileged=True XXX /bin/bash #

不穿靴子的猫 2431

计算机网络技术研究方向有哪些创新点

计算机网络技术方向的创新点众多,这些创新不仅推动了网络技术的不断发展和完善,还为用户提供了更高效、更安全、更便捷的网络服务。- 边缘计算是一种将计算和数据存储推向网络边缘的技术,通过将数据处理和分析的任务分散到网络的各个节点,降低了数据传输的延迟,提高了实时性。- 通过网络自动化工具和技术,可以实现网络配置的自动化、网络故障的自动诊断与修复等功能,降低了网络运维的复杂性和成本。- 通过引入人工智能技术,网络可以实现更智能的流量管理、故障预测和自动修复等功能,提高了网络的性能和稳定性。

Loving_enjoy的博客 1495

【ssh】打开和关闭arch linux ssh服务

【ssh】打开和关闭Linux ssh服务配置ssh安装openssh查看sshd状态启动sshd服务ssh远程连接 配置ssh 安装openssh pacman -S openssh 查看sshd状态 systemctl status sshd.service 启动sshd服务 如果未开启的话,需要启动sshd命令,执行命令 systemctl start sshd 如果想要将sshd命令开机启动的话,同样需要root权限执行 systemctl enable sshd.service ssh远程

uubs 的博客 5319

【人工智能】AI驱动值班巡检Agent(Hermes)

传统运维值班巡检场景中,存在四大核心痛点:本项目基于 Agent+Skills+浏览器自动化 架构,构建了具备自我进化能力的AI值班员,核心逻辑流如下:

奶爸的编程之路,也就一周冷个三天 177

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

windows环境下使用jupyter远程连接服务器GPU

因为之后做实验需要使用到GPU,然而我本机只有CPU,所以需要连接实验室的服务器来进行实验。 ~话不多说,GO~ (1)首先在本地使用命令连接服务器:(超简单超实用~) 本机WIN10 实验室服务器ubuntu20.04(已知服务器的ip和端口号以及服务器上的账户和密码) 现在我想连接服务器并在服务器上做实验。 第一步:首先打开终端(WIN+R) 第二步:输入:ssh -p 端口号 服务器用户名@ip(服务器IP) 回车,到这会让你输入yes或者no来确认是否连接,输入yes回车 第三步..

u014035838的专栏 2382

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MobaXterm连接远程服务器

下载一个MobaXterm,选择左上角Session,弹出界面中选择SSH,输入ip和port,登陆后输入用户名和密码,完成连接 前提是服务器开启了ssh: sudo apt-get update sudo apt-get install openssh-server sudp ps -e | grep ssh

u012528000的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Spyder 连接远程服务器(spyder-kernels)

Spyder 连接远程服务器 环境: python 3.x Spyder 3.2.6 1- sudo pip install spyder-kernels 2- 服务器端用命令 “python -m spyder_kernels.console”开启一个kernel 3 -服务器端用命令 “jupyter --runtime-dir” 找到kernel文件)所在的路径 4-Spyd...

weixin_39555721的博客 7318

tailscale内网穿透工具配置,实现ssh连接远程服务器

因为想要连接实验室的ssh,最近捣鼓了几天内网穿透,想着用tailscale来进行内网穿透,这样同时可以连接实验室的服务器和自己的主机,但是在实践的过程中确实也遇到了一些问题。

Mr_yellue的博客 2707

vscode使用远程服务器jupyter

自己配置环境的心得

shizuguilai的博客 5891

自动化连接远程服务器并执行指令

使用场景,自动远程登录主机并操作主机启动脚本实例场景,贴主本人有一台服务器因为系统问题导致的cron计划任务无法使用,需要从另一台机子上对其进行指令操作。

qq_45514735的博客 6097
上一篇: 人工智能技术篇*卷(三)
下一篇: 人工智能技术篇*卷(四)
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值