Public Key认证是什么
这是一种认证方法,类似于常见的用户名密码认证方法。不同的是需要在客户端机器上保留一个很长很长的加密key,而在服务器端需要做出相应的配置。当客户端想要访问服务器时,服务器则会检查自身配置并根据客户端所提供的用户名来识别客户端。说白了就是实现了无密码访问,并同时兼有安全保障措施。

认证过程简要说明
Public key对数据进行加密而且只能用于加密,Private key只能对所匹配的Public key加密过的数据进行解密。我们把Public key放在远程系统合适的位置,然后从本地开始进行ssh连接。此时,远程的sshd会产生一个随机数并用我们产生的Public key进行加密后发给本地,本地会用Private key进行解密并把这个随机数发回给远程系统。最后,远程系统的sshd会得出结论我们拥有匹配的Private key允许我们登录。

客户端配置
一、使用客户端的用户登录,然后运行命令“ssh-keygen -t dsa”生成Public Key和Private Key,例子如下:
[root@someserver ~]# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): /root/.ssh/id_dsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
blah:blah:blah:blah:blah:blah:blah:blah:blah:blah root@someserver

二、设置权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 644 ~/.ssh/id_rsa.pub

服务器端配置
一、从目录/etc/或/etc/ssh/或/etc/conf.d/中找到sshd_config文件,并用vi编辑器打开
二、启用RSAAuthentication和PubkeyAuthentication,并同时指定authorized_keys文件位置,设置如下:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile ~/.ssh/authorized_keys
三、更新并保存sshd_config文件后,运行命令“service sshd restart”重新启动服务,不同版本Linux的服务启动方式见:http://theos.in/desktop-linux/tip-that-matters/how-do-i-restart-linux-network-service/
四、以上三步只是启用无密码验证功能,想要这个功能生效,还必须把客户端生成的Public Key配置到服务器的authorized_keys文件中去。把之前在客户端生成的id_rsa.pub文件内容拷贝到authorized_keys中,如果有多个客户端,那么需要把每个客户端生成的Public Key都拷贝进来,注意换行,一个客户端一行。

测试
一、登录客户端,运行命令“ssh username@servername”,运行命令“ssh -vvv -o PreferredAuthentications=publickey username@servername”可以强制使用Public Key验证方法。
二、测试SFTP可以使用命令“sftp username@servername”

注意事项
.ssh目录的属主、属组使用当前用户与用户组
.ssh目录的权限请保持700
authorized_keys的权限为644
id_rsa的权限为600
id_rsa.pub的权限为644
检查用户$HOME目录权限必须为755

参考文档
http://tutorialgenius.blogspot.hk/2012/02/unixlinux-setting-up-public-key.html
http://blog.csdn.net/goalking019/article/details/4925696
http://www.comodo.com/resources/small-business/digital-certificates2.php

密钥public/private key登陆linux的更多相关文章

  1. 多主机共享ssh Public/Private Key

    前期服务器比较少,所有代码都放在github的私库中,在自己的github 设置中设置SSH keys就可以拉下相应的库中的代码到本地与服务器了,但是最近服务器多家了几台,每台都生成key加到gith ...

  2. 【原创】浅析密码学在互联网支付中的应用|RSA,Hash,AES,DES,3DES,SHA1,SHA256,MD5,SSL,Private Key,Public Key

    一)概述 什么是互联网支付? 当支付遇到互联网,一场革命自然不可避免.成为现实的是传统的现金支付已经“退居二线”,各种在线支付方式成为人们日常消费的主要支付方式.银行推出的网银以及第三方支付公司推出的 ...

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

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

  4. Xshell配置ssh免密码登录-密钥公钥(Public key)与私钥(Private Key)登录【已成功实例】

    本文转自https://blog.csdn.net/qjc_501165091/article/details/51278696 ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口 ...

  5. windows,linux,mac生成ssh public key 和 private key

    https://help.launchpad.net/YourAccount/CreatingAnSSHKeyPair Creating the key How you create your SSH ...

  6. 使用ssh公钥密钥自动登陆linux服务器

    转自:http://7056824.blog.51cto.com/69854/403669 作为一名 linux 管理员,在多台 Linux 服务器上登陆进行远程操作是每天工作的一部分.但随着服务器的 ...

  7. [zz] 使用ssh公钥密钥自动登陆linux服务器

    目录 .生成密匙对 .拷贝公匙到远程机 .启动登陆代理 这种方法处理后每次需要运行命令:ssh-add ~/.ssh/id_dsa 作为一名 linux 管理员,在多台 Linux 服务器上登陆进行远 ...

  8. 密钥登陆Linux服务器

    Linux VPS/服务器的使用越来越多,Linux的安全问题也需要日渐加强.我们远程线上的服务器,通常是通过密码方式(ip+帐号+密码,可能还多一个ssh端口)登录,如果密码不够强壮,那么系统将是灰 ...

  9. 公钥(Public Key)与私钥(Private Key)

    公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分.公钥通常用于加密会话密钥.验证数字签 ...

随机推荐

  1. html 时间单位

    <style>h1{font-size:16px;} .test{position:absolute;left:8px;width:200px;height:100px;margin:0 ...

  2. JavaScript跨域总结与解决办法 什么是跨域

    什么是跨域 1.document.domain+iframe的设置 2.动态创建script 3.利用iframe和location.hash 4.window.name实现的跨域数据传输 5.使用H ...

  3. perl模块安装

    转自: http://www.cnblogs.com/itech/archive/2009/08/10/1542832.html http://www.mike.org.cn/blog/index.p ...

  4. byte数组转16进制 输出到文件

    try { File file = new File(Environment.getExternalStorageDirectory(),"shuju2"); if(!file.e ...

  5. 运用Merge Into实现增加或更新数据

    declare @SqlStr as nvarchar(max) set @SqlStr=N'Merge Into [Categories] t USING(VALUES (9,''rice'','' ...

  6. UVALive 2678 大于s的最短子序列和

    input n s 10<=n<=100000,s<1e9 a1 a2 ... an  ai<=10000 output 大于s的最短子序列和的长度,没有输出0 #includ ...

  7. ABI & API

    API defines the programning language and function entry point, arguments type, order. ABI defines th ...

  8. Android Camera(一)

    最近老大交给了一个任务,说是要在本地视频端很够调节摄像头焦距. 碰到了一些问题: 1.手机支不支持摄像头变焦 2.系统自带摄像软件可以变焦,但是自己编写的程序不支持变焦, 这个问题网上也有很多童鞋碰到 ...

  9. list遍历

     一.对List的遍历有三种方式            List<String>    list    =    new    ArrayList<String>();    ...

  10. ListView random IndexOutOfBoundsException on Froyo

    http://stackoverflow.com/questions/8431342/listview-random-indexoutofboundsexception-on-froyo 今天遇到个 ...