SSH安全登陆原理:密码登陆与公钥登陆
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安全登陆原理:密码登陆与公钥登陆相关推荐
- 远程服务器 上传公钥,SecureCRT+Ubuntu SSH服务器的远程公钥登陆
有耐心地往下看,哥是实现了的,并且所有细节会给的相当的丰富哈. Ubuntu: Ubuntu 14.04 LTS openssh Window10(64位):SecureCRT8.0 看网上的列为同牛 ...
- CentOS SSH 单向访问无需密码登陆
一.环境配置 1.服务端:CentOS release 5.3 IP:223.73.125.198 2.客服端:CentOS release 5.8 IP:192.168.4.244 二.配置SS ...
- ssh配合vscode免密码登陆
整体流程: 1. 在本机创建公钥和私钥 2. 在本地~/.ssh/config文件中,设置IdentifyFile为私钥地址 3. 将公钥上传到服务器 下面是每一步的详解: 1. 在本机创建公钥和私钥 ...
- 【笔记】虚拟机用Xshell登陆报错“ssh服务器拒绝了密码”解决方法
[笔记]虚拟机用Xshell登陆报错"ssh服务器拒绝了密码"解决方法 参考文章: (1)[笔记]虚拟机用Xshell登陆报错"ssh服务器拒绝了密码"解决方法 ...
- 如何在SecureCRT上使用公钥登陆Linux服务器
我以前一直使用口令通过ssh协议登陆Linux服务器,最近公司要求使用公钥登陆.说是安全,好吧.那我们整一下.那到底使用公钥登陆服务器有什么好处呢?其实我理解是这样的: 当我们创建了公钥和私钥(这是一 ...
- Xshell配置ssh免密码登录-密钥公钥(Public key)
1 简介 ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,这里介绍密钥认证方式登录到linux/unix的方法. 使用密钥登录分为3步: 1 ...
- linux查询锁定时间,Linux限制远程登陆尝试密码次数及锁定时间
CentOS中有一个pam_tally2.so的PAM模块,来限定用户的登陆失败次数,若是次数达到设置的阈值,则锁定用户. 一.编译PAM的配置文件 [root@node2 ~ ]# vim /etc ...
- LINUX 查看宝塔BT登陆账号密码
LINUX 查看宝塔BT登陆账号密码 登陆SSH, 输入这段代码/etc/init.d/bt default 即可
- ftp服务器登陆密码如何显示,ftp服务器登陆原始密码
ftp服务器登陆原始密码 内容精选 换一换 本节操作介绍在Windows和Linux环境中使用SSH密码方式远程登录Linux云服务器的操作步骤.弹性云服务器状态为"运行中".弹性 ...
最新文章
- NLP-基础知识-004(生成模型)
- Python Django模板语法标签代码示例(页面渲染与取值)
- Spring中的Bean的生命周期
- PAT B1007 素数对猜想 (20 分)
- python代码书写_Python代码的优雅写法,让代码更简洁
- delphi开发LINUX程序,DELPHI开发LINUX包
- 癌症精准医疗上市公司泛生子基因 - 内推(名额有限)
- 笔记-js高程-第七章 函数表达式
- #20165201 macOS中统计代码总行数
- 小程序停止html5音乐,微信小程序-音乐播放器+背景播放
- 程序员的电脑文件管理技巧
- Tabular Editor学习笔记_1
- RestSharp的使用记录
- 部分商誉确认法和全部商誉确认法
- 架构组件—Android应用中使用视图绑定(binding)
- 初识计算机网络||概述
- Linux中gcc4.8.5升级到gcc5.4.0用已经编译好的安装包升级(重点是不用编译安装,可以更省时)
- 利用HTA文件绕过杀软及邮件钓⻥
- Binary Tree Upside Down LC解题记录
- 移动端(响应式布局--阿里百秀)
热门文章
- 写随笔写日记多参与评论
- 第一:Java+MyBatis(快速入门)
- windows虚拟机_Windows电脑体验macOS,装黑苹果?虚拟机也可以的——VMWare篇
- redis 通过aof日志恢复_Redis从入门到精通(四、Redis的持久化和数据备份与恢复)
- oracle获取行的值给产量,递归oracle sql识别值
- eclipse 下编写java code 比较好的设置和快捷键
- 不用于mysql权限管理的24260_[MySQL Reference Manual] 24 MySQL sys框架
- ado mfc mysql_MFC 中用ADO访问数据库
- 动态html树形菜单模板,JS+CSS简易树状菜单Tree
- java进行图片和字符串的互相转换