SSH全称(Secure SHell)是一种安全的应用层网络协议,用于计算机间的安全通信,是目前一套成熟的远程登陆解决方案。 有两种方法登陆:

  • 密码登陆
  • 公钥登陆

密码登陆

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)
复制代码

转载于:https://juejin.im/post/5be5a813f265da613437e9f6

SSH安全登陆原理:密码登陆与公钥登陆相关推荐

  1. 远程服务器 上传公钥,SecureCRT+Ubuntu SSH服务器的远程公钥登陆

    有耐心地往下看,哥是实现了的,并且所有细节会给的相当的丰富哈. Ubuntu: Ubuntu 14.04 LTS openssh Window10(64位):SecureCRT8.0 看网上的列为同牛 ...

  2. CentOS SSH 单向访问无需密码登陆

    一.环境配置 1.服务端:CentOS release 5.3  IP:223.73.125.198 2.客服端:CentOS release 5.8  IP:192.168.4.244 二.配置SS ...

  3. ssh配合vscode免密码登陆

    整体流程: 1. 在本机创建公钥和私钥 2. 在本地~/.ssh/config文件中,设置IdentifyFile为私钥地址 3. 将公钥上传到服务器 下面是每一步的详解: 1. 在本机创建公钥和私钥 ...

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

    [笔记]虚拟机用Xshell登陆报错"ssh服务器拒绝了密码"解决方法 参考文章: (1)[笔记]虚拟机用Xshell登陆报错"ssh服务器拒绝了密码"解决方法 ...

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

    我以前一直使用口令通过ssh协议登陆Linux服务器,最近公司要求使用公钥登陆.说是安全,好吧.那我们整一下.那到底使用公钥登陆服务器有什么好处呢?其实我理解是这样的: 当我们创建了公钥和私钥(这是一 ...

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

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

  7. linux查询锁定时间,Linux限制远程登陆尝试密码次数及锁定时间

    CentOS中有一个pam_tally2.so的PAM模块,来限定用户的登陆失败次数,若是次数达到设置的阈值,则锁定用户. 一.编译PAM的配置文件 [root@node2 ~ ]# vim /etc ...

  8. LINUX 查看宝塔BT登陆账号密码

    LINUX 查看宝塔BT登陆账号密码 登陆SSH, 输入这段代码/etc/init.d/bt default 即可

  9. ftp服务器登陆密码如何显示,ftp服务器登陆原始密码

    ftp服务器登陆原始密码 内容精选 换一换 本节操作介绍在Windows和Linux环境中使用SSH密码方式远程登录Linux云服务器的操作步骤.弹性云服务器状态为"运行中".弹性 ...

最新文章

  1. NLP-基础知识-004(生成模型)
  2. Python Django模板语法标签代码示例(页面渲染与取值)
  3. Spring中的Bean的生命周期
  4. PAT B1007 素数对猜想 (20 分)
  5. python代码书写_Python代码的优雅写法,让代码更简洁
  6. delphi开发LINUX程序,DELPHI开发LINUX包
  7. 癌症精准医疗上市公司泛生子基因 - 内推(名额有限)
  8. 笔记-js高程-第七章 函数表达式
  9. #20165201 macOS中统计代码总行数
  10. 小程序停止html5音乐,微信小程序-音乐播放器+背景播放
  11. 程序员的电脑文件管理技巧
  12. Tabular Editor学习笔记_1
  13. RestSharp的使用记录
  14. 部分商誉确认法和全部商誉确认法
  15. 架构组件—Android应用中使用视图绑定(binding)
  16. 初识计算机网络||概述
  17. Linux中gcc4.8.5升级到gcc5.4.0用已经编译好的安装包升级(重点是不用编译安装,可以更省时)
  18. 利用HTA文件绕过杀软及邮件钓⻥
  19. Binary Tree Upside Down LC解题记录
  20. 移动端(响应式布局--阿里百秀)

热门文章

  1. 写随笔写日记多参与评论
  2. 第一:Java+MyBatis(快速入门)
  3. windows虚拟机_Windows电脑体验macOS,装黑苹果?虚拟机也可以的——VMWare篇
  4. redis 通过aof日志恢复_Redis从入门到精通(四、Redis的持久化和数据备份与恢复)
  5. oracle获取行的值给产量,递归oracle sql识别值
  6. eclipse 下编写java code 比较好的设置和快捷键
  7. 不用于mysql权限管理的24260_[MySQL Reference Manual] 24 MySQL sys框架
  8. ado mfc mysql_MFC 中用ADO访问数据库
  9. 动态html树形菜单模板,JS+CSS简易树状菜单Tree
  10. java进行图片和字符串的互相转换