SSH安全登陆原理:密码登陆与公钥登陆

SSH全称(Secure SHell)是一种以安全性闻名的应用层网络通信协议,用于计算机间的安全通信,是目前比较成熟的远程登陆解决方案。

它提供两种方法登陆:

1.密码登陆

2.公钥登陆

密码登陆

1.客户端填写用户名密码发起远程登陆

2.远端服务器收到登陆请求后,会将本地的一个公钥发送给客户端

3.客户端收到公钥后,将自己的登陆信息用远端服务器的公钥加密,并将加密后的结果发送给远端服务器。

4.远端服务器收到登陆密文后,用本地私钥解密,拿到登陆信息到数据库比较。登陆信息无误时,显示登陆成功。有误时就报错。

5.登陆成功后,客户端将会将远端服务器的公钥保存到本地,等下次再登陆时,客户端检测到收到的公钥已经在本地存在(通常保存的目录:$HOME/.ssh/known_hosts),就不会报警告了

提示:

在密码登陆进行到第2步时,客户端收到了服务器的公钥,但是不确定这个公钥到底是不是要访问的目标服务器(也可能时中间攻击者,发送过来的假公钥)。此时会有提示

 # ssh [email protected]
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****[email protected]

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

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://www.cnblogs.com/zhou--fei/p/9937693.html

时间: 2024-11-10 12:57:36

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

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

自己本地安装了VMware Workstation之后,创建虚拟机,一开始是可以用Xshell登陆的,几天后,重启了电脑以及虚拟机,发现无法登陆了,还没有输入密码就有如下报错信息 这时候开始排查原因,因为可以ping通,所以不用检查防火墙理论上,但是不排除防火墙设置了可出不可进状态: 1.检查虚拟机ssh服务是否开启 service sshd status,如果没有开启,请执行service sshd start启动该服务: 2.检查 /etc/ssh/ssh_config文件,ssh服务端口是

SecureCRT公钥登陆配置

创建公钥 生存公钥名字可以自定义生成的.pub为公钥 我这里设置的是普通用户lijq使用的ssh2协议,在linux服务器执行如下操作[email protected]_168_2_222 ~]$ mkdir /home/lijq/.ssh/ 将刚才生成的.pub文件上传到服务器,我这里已经root连接上了所有直接用rz上传即可,并开始导入秘钥 [[email protected]_168_2_222 ~]$ ssh-keygen -i -f Identity.pub >> /home/lij

设置服务器公钥登陆sh脚本

#!/bin/bash  # desc: 此脚本用来创建用户,并设置成公钥登陆. # author:[email protected] # date: 2015-06-18 # 设置环境变量 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin  export PATH #输入需要创建的用户名 read -p "Input the user name:" username #确认是否上传相应的文件

如何在secureCTR上使用公钥登陆Linux服务器?

我以前一直使用口令通过ssh协议登陆Linux服务器,最近公司要求使用公钥登陆.说是安全,好吧.那我们整一下.那到底使用公钥登陆服务器有什么好处呢?其实我理解是这样的: 当我们创建了公钥和私钥(这是一对,登陆时要使用私钥解密公钥)后,把公钥给任何服务器,登陆Linux服务器时,只要我们的私钥不变,登陆任何服务器都是不需要密码的.而是使用公钥私钥进行身份验证.安全的多!这里也隐含了一个小细节,就是不要把你的私钥给丢了.否则,你想想,几百台服务器上好不容易把你的公钥配置好,而你的私钥丢失,怎么办?私

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

SecureCRT部分配置 1.首先生成公钥. 打开SecureCRT(我的版本为7.0,估计其他版本基本相同)程序,点击菜单栏的“工具”->“创建公钥”.按照步骤执行.其中一步比较重要就是选择公钥的格式.建议选择“OpenSSH”,否则在服务器端使用时需要转换为OpenSSH各式.何必多次一举呢.所以这里必须选择“OpenSSH”.如果选错了.重新生成一次就可以了. 然后选择公钥私钥存放的地方.默认Identity是私钥,Identity.pub是公钥. 2.把Identity.pub文件上传

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

1 简介 ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,这里介绍密钥认证方式登录到linux/unix的方法. 使用密钥登录分为3步: 1.生成密钥(公钥与私钥): 2.放置公钥(Public Key)到服务器~/.ssh/authorized_key文件中: 3.配置ssh客户端使用密钥登录. 1.1 生成密钥(公钥与私钥) 打开Xshell,在菜单栏点击“工具”,在弹出的菜单中选择“(新建用户密钥生成向导)”,如下图:   弹出“

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

假设 我们公司的固定IP是  183.21.89.249 连接上我们自己进行管理的服务器 然后编辑ssh的配置文件默认  /etc/ssh/sshd_config 在文件最后面另起一行添加 AllowUsers [email protected] 然后保存并退出,再重启一下ssh服务 重启之后配置就会生效,但我们不要关闭当前的连接窗口.我们另外启动一个窗口进行连接测试是否正常允许指定的IP登陆了,使用其他的IP进行测试下或者请朋友帮忙ssh看下.使用其它IP是登陆不了的,即使输入正确的密码.

问答项目---登陆账号密码登陆做AJAX异步校验

异步验证管理员帐号方法: /* 异步验证管理员帐号 */ public function checkAccount(){ if(!IS_AJAX){echo "页面不存在";die();}; $where = array( //'account' => $_POST['username'] 'account' => I('post.username') ); if(M('admin')->where($where)->find()){ echo 1; }else

局域网查看共享文件登陆账号密码仍进不去

问题:最近win7系统用粉碎机粉碎文件后,导致局域网查看共享文件登陆账号密码进不去 解决方法:运行 组策略编辑器 gpedit.msc-----打开计算机配置------windows设置-------安全设置------本地策略---------安全选项中的:网络安全:LAN管理器身份验证级别,默认是"没有定义",更改为"发送LM和NTLM相应" 局域网查看共享文件登陆账号密码仍进不去,布布扣,bubuko.com