首页 > 其他分享 >SSH

SSH

时间:2023-10-01 12:55:47浏览次数:23  
标签:公钥 认证 密钥 服务器 客户端 SSH

SSH

SSH(Secure Shell,安全外壳)是一种网络安全协议,通过加密和认证机制实现安全的访问和文件传输等业务。传统远程登录和文件传输方式。Telnet、FTP,使用明文传输数据

在未建立SSH连接时,SSH服务器会在指定端口侦听连接请求,SSH客户端向SSH服务器该指定端口发起连接请求后,双方建立一个TCP连接,后续会通过该端口通信。

默认情况下,SSH服务器使用端口号22。

工作流程:

加密算法:

SSH服务器和客户端通过密钥交换算法,动态生成共享的会话密钥和会话ID,建立加密通道。会话密钥主要用于后续数据传输的加密,会话ID用于在认证过程中标识该SSH连接。![ssh02]

SSH密钥交换

  1. SSH服务器生成素数G、P、服务器私钥b,并计算得到服务器公钥y=(G^b)%P。

  2. SSH服务器将素数G、P、服务器公钥y发送给SSH客户端。

  3. SSH客户端生成客户端私钥a,计算得到客户端公钥x=(G^a)%P。

  4. SSH客户端将客户端公钥x发送给SSH服务器。

  5. SSH服务器计算得到对称密钥K=(xb)%P,SSH客户端计算得到对称密钥K=(ya)%P,数学定律可以保证SSH服务器和SSH客户端生成的对称密钥相同。

SSH支持密码(password)认证、密钥(publickey)认证、password-publickey认证(双认证)、all认证(单认证)

密码认证

SSH密码认证登录流程

  1. SSH客户端向SSH服务器发送登录请求。

  2. SSH服务器将服务器公钥发送给SSH客户端。

  3. SSH客户端输入密码,使用服务器公钥加密密码后发送给SSH服务器。

  4. SSH服务器收到密文,使用服务器私钥解密得到密码。验证密码是否正确,如果正确则认证通过。

避免攻击者伪装成ssh服务器获取登录密码的方法:确定公钥后,客户端会在本地保存,即公钥指纹,下次访问时,SSH客户端将会核对SSH服务器发来的公钥和本地保存的是否相同。

密钥认证

为避免中间人攻击,可以使用安全性更高的密钥认证。

SH密钥认证登录流程

  1. 在进行SSH连接之前,SSH客户端需要先生成自己的公钥私钥对,并将自己的公钥存放在SSH服务器上。

  2. SSH客户端向SSH服务器发送登录请求。

  3. SSH服务器根据请求中的用户名等信息在本地搜索客户端的公钥,并用这个公钥加密一个随机数发送给客户端。

  4. SSH客户端使用自己的私钥对返回信息进行解密,并发送给SSH服务器。

  5. SSH服务器验证SSH客户端解密的信息是否正确,如果正确则认证通过。!

SSH和SSL的区别:

SSH和SSL都是网络安全协议,通过加密和认证提升两台设备间传输数据的安全性。但SSH和SSL的生效方式和服务目标存在差异。

SSH在两台设备间创建安全隧道,使这两台设备间可以安全地发送命令、传输数据等。例如,客户端通过SSH远程登录到一台服务器上,就可以安全地远程管理这台服务器,在服务器上执行想要的命令。

SSL则是使用SSL证书保证两台设备间安全地传输数据,而不是像SSH那样可以执行命令。例如,用户通过浏览器访问某安装了SSL证书且启用了HTTPS的服务器,浏览器和服务器之间可以安全地传输数据。

标签:公钥,认证,密钥,服务器,客户端,SSH
From: https://www.cnblogs.com/huangshisan/p/17737815.html

相关文章

  • VScode中下载了插件但是无法找到SSH Target连接服务器的解决方法(CANNOT find SSH Targ
    VSCode版本vscodeversion:(version1.82)已下载扩展installedextensions:Remote-SSHv0.106.4Remote-SSH:EditingConfigurationFilesv0.86.0RemoteDevelopmentv0.24.0WSLv0.81.3几天前我从pycharm转战vscode,在连接服务器时遇到了一些问题。根据一些较为古早的......
  • Ubuntu服务器安全性提升:修改SSH默认端口号
    在Ubuntu服务器上,SSH(SecureShell)是一种至关重要的远程连接工具。它提供了一种安全的方式来远程连接和管理计算机系统,通过加密通信来确保数据的保密性和完整性。SSH协议广泛用于计算机网络中,用于远程管理、文件传输和安全通信等任务。然而,SSH默认使用的端口号是22,这也是黑客们常常......
  • Windows下SSH配置多账号
    C:\Users\Administrator\.ssh目录下新建config文件config文件内容如下配置了两个账号,举例如下#githubHostgithub.comHostNamegithub.comIdentityFile~/.ssh/github_id_rsaPreferredAuthenticationspublickey#giteeHostgitee.comHostNamegitee.comIdentityFile~/......
  • linux系统升级ssh
    升级ssh7.7,linux安全问题安装包1.上传压缩包到指定的目录/home1.1或者rz-y上传2.进入home目录cd/home#有的系统缺少,安装gcc插件yuminstallgcc-y#解压unzipopenssh_update_ssh.zipcdopenssh#指定安装脚本./update_ssh.sh......
  • Ubuntu20.04 入门ip ssh 源
    sudovi/etc/netplan/00-installer-config.yamlnetwork:version:2ethernets:ens32:dhcp4:falseaddresses:[192.168.1.5/24]gateway4:192.168.1.1nameservers:addresses:[114.114.114.114]#addresses:192.168.1.5/24]......
  • Anolis8制作OpenSSH9.4p1 RPM包
    Anolis8制作OpenSSH9.4p1RPM包......
  • ssh添加白名单限制登录
    集团分公司内网环境下的zabbix主机需要远程管理,那么就需要将ssh22端口从公司出口路由器中映射出来,如果不加以登录限制,那么被黑的几率就很高了,现将具体方法记录如下:编辑/etc/hosts.allow文件,将允许远程登录的主机ip添加到该文件中:sshd:50.30.150.158:allowsshd:50.194.2.1......
  • 转!!java ssh远程服务器报错 解决方法 Key exchange was not finished, connection is c
    转自:https://blog.csdn.net/weixin_45266856/article/details/129754122是ssh中的key交换算法不兼容导致 ssh报错解决:vi/etc/ssh/sshd_configKexAlgorithmsdiffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-gro......
  • Spring中构造器、init-method、@PostConstruct、afterPropertiesSet孰先孰后,自动注入
     引用:https://www.cnblogs.com/qlqwjy/p/9417034.html首先明白,spring的IOC功能需要是利用反射原理,反射获取类的无参构造方法创建对象,如果一个类没有无参的构造方法spring是不会创建对象的。在这里需要提醒一下,如果我们在class中没有显示的声明构造方法,默认会生成一个无参......
  • 8.4 ProcessHeap
    ProcessHeap是Windows进程的默认堆,每个进程都有一个默认的堆,用于在进程地址空间中分配内存空间。默认情况下ProcessHeap由内核进行初始化,该堆中存在一个未公开的属性,它被设置为加载器为进程分配的第一个堆的位置(进程堆标志),ProcessHeap标志位于PEB结构中偏移为0x18处,第一个堆头......