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. Postgres数据库在Linux中的I/O优化

    I/O 优化1 打开 noatime方法: 修改 /etc/fstab2 调整预读方法: 查看 sudo blockdev --getra /dev/sda 设置 sudo blockdev --se ...

  2. 在Linux服务器上增加硬盘没那么简单【转】

    运维案例:HP服务器,LINUX系统在保障数据的前提下扩展/home分区 部门需求:研发部门提出需要在现有的服务器上扩容磁盘空间,以满足开发环境的磁盘需求.现有空间1.6T需要增加到2T. 需求调查分 ...

  3. MyEclipse的Expressions没有结果的解决办法

    之前我的Expressions在Value这一列什么都不显示,就连简单的1+2结果3都不显示出来. 然后我咬咬牙把它卸载了,然后重装就好了,我也不清楚是什么原因. 1.之前我安装的目录是"C ...

  4. 打开另外一个App

    /** * 打开一个app * * @param packageName * @param data * @return */ public static boolean lanuchApp(Cont ...

  5. 解决centos无法上传文件和打开文件夹

    使用yum搭建了ftp服务..yum的使用参考:http://blog.csdn.net/enson16855/article/details/9140623 windows使用FileZilla连接 ...

  6. android执行外部命令、检测文件是否存在、自动检测U盘路径

    private final String UDiskFileName = "/2969_logo/bootfile.image"; private final String Loc ...

  7. tiny210移植linux内核(3.0.8)杂项

    关于三星芯片nand内存分区文件: linux-3.0.8/drivers/mtd/nand/s3c_nand.c struct mtd_partition s3c_partition_info[] ...

  8. JMeter-使用Badboy录制Web测试脚本

    JMeter是纯Java编写的软件功能和性.能测试工具,其录制脚本过于笨拙和复杂.而Badboy是用C++开发的动态应用测试工具,其拥有强大的屏幕录制和回放功能,同时提供图形结果分析功能,刚好弥补了J ...

  9. ubuntu 下重装mysql若干问题

    最近由于种种原因需要重装mysql.打开终端开始卸载 sudo apt-get remove mysql-comm sudo apt-get auto remove 重新开始安装mysql sudo ...

  10. double类型之四舍五入

    题目: A - Tutor Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%I64d & %I64u Submi ...