首页 > 其他分享 >SSH原理与运用(一):远程登录

SSH原理与运用(一):远程登录

时间:2024-09-17 22:24:51浏览次数:9  
标签:公钥 登录 主机 ssh 远程 SSH

原文:SSH 原理与运用(一):远程登录 - 阮一峰的网络日志

SSH 是每一台 Linux 电脑的标准配置。

随着 Linux 设备从电脑逐渐扩展到手机、外设和家用电器,SSH 的使用范围也越来越广。不仅程序员离不开它,很多普通用户也每天使用。

SSH 具备多种功能,可以用于很多场合。有些事情,没有它就是办不成。本文是我的学习笔记,总结和解释了 SSH 的常见用法,希望对大家有用。

虽然本文内容只涉及初级应用,较为简单,但是需要读者具备最基本的"Shell 知识"和了解"公钥加密"的概念。如果你对它们不熟悉,我推荐先阅读《UNIX / Linux 初学者教程》《数字签名是什么?》


SSH 原理与运用

img

一、什么是 SSH?

简单说,SSH 是一种网络协议,用于计算机之间的加密登录。

如果一个用户从本地计算机,使用 SSH 协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。

最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995 年,芬兰学者 Tatu Ylonen 设计了 SSH 协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为 Linux 系统的标准配置。

需要指出的是,SSH 只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是 OpenSSH,它是自由软件,应用非常广泛。

此外,本文只讨论 SSH 在 Linux Shell 中的用法。如果要在 Windows 系统中使用 SSH,会用到另一种软件 PuTTY,这需要另文介绍。

二、最基本的用法

SSH 主要用于远程登录。假定你要以用户名 user,登录远程主机 host,只要一条简单命令就可以了。

$ ssh user@host

如果本地用户名与远程用户名一致,登录时可以省略用户名。

$ ssh host

SSH 的默认端口是 22,也就是说,你的登录请求会送进远程主机的 22 端口。使用 p 参数,可以修改这个端口。

$ ssh -p 2222 user@host

上面这条命令表示,ssh 直接连接远程主机的 2222 端口。

三、中间人攻击

SSH 之所以能够保证安全,原因在于它采用了公钥加密。

整个过程是这样的:

(1)远程主机收到用户的登录请求,把自己的公钥发给用户。

(2)用户使用这个公钥,将登录密码加密后,发送回来。

(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像 https 协议,SSH 协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。

可以设想,如果攻击者插在用户与远程主机之间(比如在公共的 wifi 区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么 SSH 的安全机制就荡然无存了。这种风险就是著名的“中间人攻击”(Man-in-the-middle attack)。

SSH 协议是如何应对的呢?

四、口令登录

如果你是第一次登录对方主机,系统会出现下面的提示:

$ ssh user@host

The authenticity of host 'host (12.18.429.21)' can't be established.

RSA key fingerprint is 98:2e:d7:e0

标签:公钥,登录,主机,ssh,远程,SSH
From: https://www.cnblogs.com/Higurashi-kagome/p/18417535

相关文章

  • # wps必须要登录激活才能使用吗?
    WPS必须登录激活才能使用吗?如下图,当我们使用WPS时,不登录会显示工具栏灰色不可用状态。答:WPS不一定要登录激活才能使用。一、免费使用的情况1、基础功能在不登录的情况下,用户可以使用WPS的一些基础功能。例如,使用WPS文字进行简单的文档编辑,如文字输入、格式设置(......
  • 我使用本地windows11上的VSCode远程连接到ubuntu进行RUST程序开发,我在VSCode上安装了
    当你使用VSCode的Remote-SSH扩展从本地Windows11连接到远程的Ubuntu服务器进行开发时,插件的安装有以下行为:插件的安装位置本地插件:某些插件,例如VSCode的界面插件或与本地编辑器相关的插件,安装在你的本地Windows系统上。这些插件不需要与远程服务器交互,因此它们仅......
  • 微信授权登录接口开发
    微信登陆过程在项目开发中,难免会遇到微信授权登录这一操作,本讲来讲一下微信登陆是如何实现的?关于校验登录,有诸多方法,记录方法如下:使用SpringMVC提供的拦截器网关服务全局过滤器使用AOP面向横切面实现对于使用SpringMVC提供的拦截器来实现,其大致的思路如下:注意:用户......
  • 在远程的ubuntu服务器安装了rust环境,本地的windows上也安装了VSCode并且连接到了ubunt
    你已经在Ubuntu服务器上安装了Rust环境,并且在本地Windows上安装了VSCode并通过Remote-SSH扩展连接到了Ubuntu服务器。接下来,我将指导你如何在Ubuntu上创建一个Rust项目,并使用VSCode进行开发和调试。步骤1:在Ubuntu上创建Rust项目连接到Ubuntu服务器(......
  • 如何为微信小程序添加微信登录和微信授权功能
    如何为微信小程序添加微信登录和微信授权功能1.快速入门:微信登录的魔法登录按钮:如何在小程序中添加微信登录按钮授权协议:用户授权与隐私保护的重要性一键登录:实现微信一键登录的步骤2.身份验证:确保用户信息的真实性临时登录:微信提供的临时登录凭证机制用户校验:如何验......
  • SSH工具 MobaXterm的使用与快捷配置
    软件下载/安装与链接服务器/本地虚拟机文章目录软件下载/安装与链接服务器/本地虚拟机软件下载软件安装使用软件链接非本地机器并设置用户密码我不想有确定密码的弹窗其余便捷配置配置右键粘贴SSH链接设置软件下载如果你访问不了这个网址,可以评论区找博主或者关......
  • 远程控制访问
    目的:通过pc远程对路由器进行配置(1)telnet协议仿真实验:R1(config)#usernameadminprivilege15passwordadmin//创建本地账号,授予15的特权级别R1(config)#linevty02//进入虚拟终端线路,0-2表示同时允许三个会话,用于远程登录设备R1(config-line)#loginlocal//使用本......
  • 微信小程登录
    ......
  • gitlab安装好后无法登录,如何修改密码
    部署一切正常的话,就可以访问gitlab的管理界面了。端口可以在vim/etc/gitlab/gitlab.rb文件中修改。修改后记得使用命令:gitlab-ctlreconfigure刷新配置,然后重启gitlab,命令是gitlab-ctlrestart。既然是linux,管理员的账号一般都是root。开始整:进入路径:cd/opt/gitlab/bingi......
  • C#实现系统登录
     1,新建窗口frm_LoginusingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespaceWindowsFo......