SSH全称(Secure SHell)是一种以安全性闻名的应用层网络通信协议,用于计算机间的安全通信,是目前比较成熟的远程登陆解决方案。
它提供两种方法登陆:
1.密码登陆
2.公钥登陆
 
密码登陆
 
1.客户端填写用户名密码发起远程登陆
2.远端服务器收到登陆请求后,会将本地的一个公钥发送给客户端
3.客户端收到公钥后,将自己的登陆信息用远端服务器的公钥加密,并将加密后的结果发送给远端服务器。
4.远端服务器收到登陆密文后,用本地私钥解密,拿到登陆信息到数据库比较。登陆信息无误时,显示登陆成功。有误时就报错。
5.登陆成功后,客户端将会将远端服务器的公钥保存到本地,等下次再登陆时,客户端检测到收到的公钥已经在本地存在(通常保存的目录:$HOME/.ssh/known_hosts),就不会报警告了
 
提示:
在密码登陆进行到第2步时,客户端收到了服务器的公钥,但是不确定这个公钥到底是不是要访问的目标服务器(也可能时中间攻击者,发送过来的假公钥)。此时会有提示
 # ssh user@host
The authenticity of host 'host (18.18.229.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?

如果确定这个公钥就是目标服务器发过来的公钥,就点击yes,完成登陆。


公钥登陆

公钥登陆相对密码登陆可以避免中间攻击,同时也简单很多
1.客户端在本地生成一对公私钥
2.将客户端本地生成的公钥手动添加到远端服务器上
3.客户端发起登陆请求到远端服务器
4.远端服务器收到请求后,会本地生成一串随机字符,并将该随机字符串发送给客户端
5.客户端收到远端服务器的随机字符串后,用本地私钥加密,并将密文传给远端服务器
6.远端服务器将收到的密文用保存的客户端公钥解密,并将解密结果与原随机字符串对比,若一致的话证明客户端可信,允许登陆。
提示:
客户端生成公私钥的步骤如下:
第一步:在本地机器上使用ssh-keygen产生公钥私钥对
执行命令:
ssh-keygen -t rsa -C "150321****@163.com"
-t :表示加密类型
-C :表示密钥标示字符串
 
第二步:将公钥id_rsa.pub添加到GITLab中的SSHKEY上
执行命令:
192:~ zhoufei$ cd ~/.ssh
192:.ssh zhoufei$ cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBQYZidTBczPtJ22xNJwl7Pq+yaZnualVS8juad3Oq+w6v5kgin9sW+xs7w9qrGmWHTkkOIPvckmqY7qobazI32YzI9IKFE2yGm51H1pXM4t9iEB0OCHdy1s1D2gB/bNI2ZJPhDjLOfbGO1Mj9B85n8WR0dy8eYSRBhUneiKor8ENnCvP1Sw4XOsEg6aDCMNRCzDY94Ar4ps41hcg34dNS2eMPsXMrTrz8fCv+IbBltUMDVdcoEFwb8VyYZ8ZspbY6zzRc1nZ5flhfGoB6Zjmmz2tSGCnNS16GdTpoGJd+UaiqrWNuocYWorPocbeMiIi+duZfvYVRNDCmaN0zUlwl****977961@qq.com

若添加后,无法正常拉取和提交,就本地查询是否有客户端身份信息

abcdeMacBook-Pro:.ssh zhoufei$ ssh-add -L
The agent has no identities.

解决方法:

abcdeMacBook-Pro:.ssh zhoufei$ ssh-add
Enter passphrase for /Users/zhoufei/.ssh/id_rsa:
Identity added: /Users/zhoufei/.ssh/id_rsa (/Users/zhoufei/.ssh/id_rsa)
 
 
 
 

SSH安全登陆原理:密码登陆与公钥登陆的更多相关文章

  1. SSH免密登陆原理及实现

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.SSH简介 SSH(Secure Shell)是一种通信加密协议,加密算法包括:RSA.DSA等. RSA:非对称加密算法,其安全性基于极其困难 ...

  2. 【笔记】虚拟机用Xshell登陆报错“ssh服务器拒绝了密码”解决方法

    自己本地安装了VMware Workstation之后,创建虚拟机,一开始是可以用Xshell登陆的,几天后,重启了电脑以及虚拟机,发现无法登陆了,还没有输入密码就有如下报错信息 这时候开始排查原因, ...

  3. 使用ssh公钥登陆

    记录一下使用的具体命令,具体参考: Centos设置禁止密码登录而只使用密钥登录SSH方法  优先参考这个. ssh使用公钥授权不通过的问题解决 Xshell配置ssh免密码登录-密钥公钥(Publi ...

  4. ssh和ssh-copy-id以及批量多机无密码登陆详解

    本文主要围绕着ssh服务以及如何通过ssh-copy-id实现无密码登陆. 1. sshd 服务以及配置   2.ssh-copy-id命令的使用以及原理.3.批量多机互相信任. 1. sshd 服务 ...

  5. SecureCRT上使用公钥登陆Linux服务器

    SecureCRT部分配置 1.首先生成公钥. 打开SecureCRT(我的版本为7.0,估计其他版本基本相同)程序,点击菜单栏的“工具”->“创建公钥”.按照步骤执行.其中一步比较重要就是选择 ...

  6. Xshell配置ssh免密码登录-密钥公钥(Public key)

    1 简介 ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,这里介绍密钥认证方式登录到linux/unix的方法. 使用密钥登录分为3步: 1 ...

  7. Linux root用户密码重置,远程登陆,文件基本属性

    Linux root用户密码重置,远程登陆,文件基本属性 忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码 ...

  8. 设置ssh只允许用户从指定的IP登陆

    假设 我们公司的固定IP是  183.21.89.249   连接上我们自己进行管理的服务器   然后编辑ssh的配置文件默认  /etc/ssh/sshd_config   在文件最后面另起一行添加 ...

  9. xampp 用phpmyadmin在页面上修改密码后,无法登陆,密码没问题

    xampp 用phpmyadmin在页面上修改密码后,无法登陆,密码没问题一直提示密码错误, 什么原因? ------解决方案--------------------改了密码之后,phpmyadmin ...

随机推荐

  1. mysql--视图,触发器,事务,存储过程

    一.视图 视图是一个虚拟表(非真实存在),是跑到内存中的表,真实表是硬盘上的表,怎么就得到了虚拟表,就是你查询的结果,只不过之前我们查询出来的虚拟表,从内存中取出来显示在屏幕上,内存中就没有了这些表的 ...

  2. Echart自定义属性3

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. “全栈2019”Java多线程第九章:判断线程是否存活isAlive()详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  4. java初级易错问题总结

    1.什么是变量?变量的定义格式?要使用变量需要注意什么?就是可变的量数据类型 变量名 = 数值;同一范围内不能重复定义不赋值不能使用 2.Java中的数据类型分几类?基本数据类型有哪些?两大类     ...

  5. 利用PHP的curl批量导出文件

    场景 1.需要从网站中导出大量的文件,包括有图片格式,文档格式等附件内容. 2.分文件夹来导出不同的数据 <?php header("Content-Type:text/html;ch ...

  6. redis cluster 的ERR max number of clients reached 问题排查

    早上发现微服务连不上redis cluster了,看来下日志如下 [root@win-jrh378d7scu 7005]# bin/redis-cli -c -h 15.31.213.183 -p 7 ...

  7. Vijos 小胖的奇偶

    第一遍做 #include<iostream> #include<cstdlib> #include<cstdio> #include<cstring> ...

  8. Visual Studio 2019 Key

    Visual Studio 2019 Enterprise:BF8Y8-GN2QH-T84XB-QVY3B-RC4DF Visual Studio 2019 Professional:NYWVH-HT ...

  9. php正则验证邮箱、手机号、姓名、身份证、特殊符号等

    1.邮箱验证 1 $email='1515212@qq'; 2 $preg_email='/^[a-zA-Z0-9]+([-_.][a-zA-Z0-9]+)*@([a-zA-Z0-9]+[-.])+( ...

  10. 剑指offer——面试题32.1:分行从上到下打印二叉树

    void BFSLayer(BinaryTreeNode* pRoot) { if(pRoot==nullptr) return; queue<BinaryTreeNode*> pNode ...