使用public key来做SSH authentication

public key authentication(公钥认证)是对通过敲用户名、密码方式登录服务器的一种替代办法。这种方法更加安全更具有适应性,但是更难以配置。

传统的密码认证方式中,你通过证明你你知道正确的密码来证明你是你。证明你知道密码的唯一方式是你告诉服务器密码是什么。这意味着如果服务器被黑掉,或者欺骗,那么一个黑客攻击者就能学习到你的密码。

Public key authentication(公钥认证)解决了这个问题。你产生一个密钥对,该密钥对由一个public key(公钥)(每个人都可以知道的)和一个私钥(你负责该私钥的安全,不让任何人知道)。私钥可以用于产生签名(signatures)。一个由你的私钥派生出来的签名不能被任何不知道那个私钥的人所伪造,但同时任何知道你的公钥的人都能验证一个签名是否真正是由你的那个公钥、私钥所配对生成的签名!

你可以在自己的机器上创建上述公钥私钥key pair,随后你将公钥copy到服务器上。然后服务器询问你证明你是你时,PuTTY可以使用你的私钥产生一个签名并传给服务器。服务器就可以验证那个签名的真伪了(因为服务器有公钥),并且决定是否允许你登陆。现在如果服务器本身被黑掉或者被欺骗,那么攻击者无法获得你的私钥或者密码,他们仅仅能够获得一个签名而已。而签名本身是不能被重用的,所以他们什么也无法获得(原因是签名都是在秘钥交换过程中动态生成的)。

在这里有一个问题:如果你的私钥在你的本机明码保存的话,那么任何人只要能够访问到那个私钥文件那么他就能够冒充你来创建签名。所以他们因此将能够冒充你的身份登录到系统中去。因为这个原因,那么你的私钥通常在本地存储时是加密过的,这个私钥的加密就使用一个你设定的passphrase来加密的。为了创建一个签名,PuTTY必须要首先解密这个密码私钥,你必须通过输入正确的passphrase才能保证PuTTY能够正确解密私钥,进而创建签名。

上述过程使得public key authentication方式和单纯密码认证方式显得有些不是很方便:每次你登陆服务器,替代输入一个简单密码的方式,而必须输入一个很长的passphrase。一个解决方案是你使用一个authentication agent,该认证代理就是一个保存拥有已经被解密过的私钥并且据此在被请求时创建签名。Putty的认证代理被称为Pageant.当你开始一个windows session,你启动Pageant并且加载你的私有秘钥(需要输入一次passphrase)。其他的session,你就可以启动Putty任意次数,而由于Pageant会在不需你任何介入的情况下自动创建你的签名,而使得公钥认证使用更加方便一些。当你关闭了windows session, pageant shuts down,而永远不会将被解密过的私钥文件放到磁盘(仅仅存在于内存中)。很多人认为这是一个安全性和便利性的很好折中。

有多种公钥算法,最常用的是RSA,但也有其他的,比如DSA(DSS),美国联邦数字签名标准等。

在github使用中,如果你需要git push操作的话,很有可能就会出现:

GitHub: Permission denied (publickey).

的错误,原因就是你没有在github服务器上创建公钥,方法参考:

https://help.github.com/articles/generating-ssh-keys/

在上述github的命令执行过程中,

若执行ssh-add /path/to/xxx.pem是出现这个错误:Could not open a connection to your authentication agent,则先执行如下命令即可:

  ssh-agent bash

http://the.earth.li/~sgtatham/putty/0.55/htmldoc/Chapter8.html

时间: 2024-10-15 17:24:49

使用public key来做SSH authentication的相关文章

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

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

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

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

Xshell配置密钥公钥(Public key)与私钥(Private Key)登录

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

Putty使用公钥认证时,报错:Disconnected: No supported authentication methods available(server sent:public key) 问题的解决

Putty使用公钥认证时,按照常规方法设置,一直报错:Disconnected: No supported authentication methods available (server sent:public key). 如截图: 找了半天没找到问题出在哪里,sshd的设置一切正常.这个做过多次居然也能错???? 最后发现原来是 ~/.ssh/authorized_keys 文件的内容有问题,putty生成的pub文件的格式如下: ---- BEGIN SSH2 PUBLIC KEY ---

做ssh key分发实验中的一个简单问题

1.操作系统:CentOS6.6 2.任务:ssh key分发实验 3.操作过程如下: [[email protected] ~]$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/sky9890/.ssh/id_dsa): Created directory '/home/sky9890/.ssh'. Enter passphrase (em

linux使用public key方式ssh邓肯、

一.前言: ssh远程登录密码认证的方式有三种,password.Keyboard Interactive.Public Key 前面两种方式就是密码认证,含义都是一样大同小异.第三种是登录方式最安全的一种. 下面我们就来实现第三种方式public key秘钥认证方式. 二.原理: ssh客户端利用服务端发过来的私钥,进行登录的认证,认证服务端的公钥.从来实现 安全的访问. 三.准备: 服务端 系统:Centos7.1 四.服务端生成秘钥 ssh-keygen -b 1024 -t dsa 接下

使用public/private key让putty(ssh)自动登录

方法一:使用puttygen.exe 第一步:生成密匙 运行puttygen.exe,选择需要的密匙类型和长度,使用默认的SSH2(RSA),长度设置为1024就可以了. passphrase可以为空,免得登录时还是要输入一次密码. 点击Save private key 按钮保存公匙和私匙,例如key.ppk,public key不用保存,以后使用Puttygen.exe Load功能就可以显示public key. 第二步:上传密匙 用自己的帐号登录linux主机,然后执行下面的命令: $ c

配置ssh public key登陆时遇到的两个问题

在添加本机的public key到远程服务器之后,理论上如果ssh的配置文件没有问题并且网络和端口是通的,就可以无密码登陆到远程服务器,然而如果不能登陆,则可能是如下两个原因: 远程服务器的$HOME/.ssh目录权限必须是700,$HOME/.ssh/authorized_keys的权限必须是600,本机的$HOME/.ssh/id_rsa或者$HOME/.ssh/id_dsa文件的权限必须是600.这种问题修改文件和目录的权限即可解决. 本机的$HOME/.ssh/known_hosts文件

SSH primary Key 和 public key 解析

SSH key 用到的是非对称加密RSA 算法,关于 RSA算法, 下面的博客有详细的介绍: http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html 这里只列举几个关键的点, 以介绍秘钥的产生: 随意选择两个大的素数p和q,p不等于q,计算N=pq. 根据欧拉函数,求得r = (p-1)(q-1) 选择一个小于 r 的整数 e,求得 e 关于模 r 的模反元素,命名为d.(模反元素存在,当且仅当e与r互质) 将 p 和