目录

1. 公钥私钥简介

2. 使用密钥进行ssh免密登录

2.1. 实验环境

2.2. 开始实验

3. ssh的两种登陆方式介绍

3.1. 口令验证登录

3.2. 密钥验证登录

4. 总结


1、公私钥简介与原理

公钥和私钥都属于非对称加密算法的一个实现,这个加密算法的信息交换过程是:

1) 持有公钥的一方(甲)在收到持有私钥的一方(乙)的请求时,甲会在自己的公钥列表中查找是否有乙的公钥,如果有则使用一个随机字串使用公钥加密并发送给乙。

2) 乙收到加密的字串使用自己的私钥进行解密,并将解密后的字串发送给甲。

3) 甲接收到乙发送来的字串与自己的字串进行对比,如过通过则验证通过,否则验证失败。

非对称加密算法不能使用相同的密钥进行解密,也就是说公钥加密的只能使用私钥进行解密。

2、使用密钥进行ssh免密登录

ssh使用私钥登录大致步骤就是:主机A(客户端)创建公钥私钥,并将公钥复制到主机B(被登陆机)的指定用户下,然后主机A使用保存私钥的用户登录到主机B对应保存公钥的用户。

(1) 实验环境

    两台主机:

1) 主机A(客户机):192.168.187.137

2) 主机B(被登陆机):192.168.187.143

(2) 实验开始

  1. 在需要免密登陆的主机(主机A)下生成公钥和私钥
 # ssh-keygen -t rsa     ##-t rsa可以省略,默认就是生成rsa类型的密钥

说明:命令执行后会有提示,输入三次回车即可,执行完成后会在当前用户的.ssh目录下生成两个文件:id_rsa、id_rsa.pub文件,前者时私钥文件,后者是公钥文件(拷贝到其他主机只需要拷贝这个文件的内容)

  1. 将公钥复制到被登陆的主机上的 ~/.ssh/authorized_keys 文件中

拷贝公钥有两种方法,其原理都相同:

方式一:使用 ssh-copy-id 直接拷贝

使用 ssh-copy-id 进行拷贝公钥非常方便,只需要指定目标主机和目标主机的用户即可。

 # ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.187.142

执行这条命令后会自动将登录主机的公钥文件内容追加至目标主机中指定用户(root).ssh目录下的authorized_keys文件中。这个过程是全自动的,非常方便。

     方法二:自己创建文件进行拷贝

1) 在登录主机(客户机)上创建authorized_keys文件并将公钥追加到该文件。

先cd到登录机使用的用户下的 .ssh 目录,方便操作

 # cat id_rsa.pub >> authorized_keys
# chmod authorized_keys ##修改文件权限为600,该文件有规定如果属组其他人出现可写则文件就不会生效

2) 在被登录机的指定用户家目录下创建 .ssh 目录(这里在root用户下创建,因为要使用密钥登陆到root用户)

# mkdir .ssh
# chmod .ssh ##将目录权限改为700该目录的权限必须是700才有效

3) 将登录机创建的authorized_keys文件拷贝到被登录机,使用scp

 # scp authorized_keys root@192.168.187.142:/root/.ssh/
authorized_keys % .4KB/s :
  1. 登录

使用主机A乙root用户身份登陆到主机B

 # ssh root@192.168.187.142
Last login: Wed Feb :: from 192.168.187.137

首次登录将弹出保存信息,输入yes即可,此时已经实现了免密的密钥登陆。

  1. 注意事项和说明

上例只能实现主机A免密登陆到主机B的root用户,如果想让主机B也免密登录到主机A,创建密钥和拷贝步骤相同。

密钥登陆的方式只能登录被登录机中 .ssh 目录下有对应公钥的用户,如果想让所有用户都可以被登录则需要将authorized_keys文件的内容追加到其他用户的 ~/.ssh/authorized_keys 文件中。

如果使用自己创建的authorized_keys文件进行复制公钥则要严格设置权限,权限不正确会导致文件无法使用,也就无法进行密钥验证。

3、 ssh的两种登陆方式介绍

(1) 口令验证登录

(2) 密钥验证登录

密钥验证的前提需要登陆主机生成一对密钥(公钥和私钥),并将公钥放置在服务器上。

4、 总结

ssh密钥登录可以实现免密登录,免密登陆有很多用途:例如scp免认证、rsync备份免交互等一切使用ssh认证的地方均可以免交互,也就实现了自动化。

密钥认证的大概步骤

1) 客户端(登录主机)生成一对密钥:#  ssh-keygen

2) 将客户机的公钥复制到服务端(被登陆主机)要登录的用户的 ~/.ssh/authorized_keys 文件中:#  ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.187.142

注意:如果使用自己复制的方法,一定要注意.ssh目录和authorized_keys文件的权限,前者是700,后者是600

3) 使用客户机ssh连接服务端或者使用ssh协议认证的程序即可实现免密,免交互

注意:要想两端登录同时免密,就在主机B(被登陆机)也创建密钥然后将公钥拷贝到主机即可。

个人公众号(linuxjsz)

专注IT技术、知识分享,面试资源共享、讲解

只做全网最比心的公众号,欢迎你的关注!

Linux密钥登录原理和ssh使用密钥实现免密码登陆的更多相关文章

  1. linux如何配置双机SSH信任然后双向免密码登陆

    linux如何配置双机SSH信任然后双向免密码登陆 www.111cn.net 更新:2015-01-14 编辑:edit02_lz 来源:转载 有时为了方便管理多台Linux主机,想实现双机之间信任 ...

  2. [Linux] ssh秘钥对免密码登陆

    准备两台linux服务器 a和b , 在a上使用ssh命令登陆b服务器 , 并且不用 输入密码 1.在a服务器上,比如是root用户 ,进去/root/.ssh目录 ,没有就创建, 就是进入家目录的. ...

  3. Jenkins进阶系列之——09配置Linux系统ssh免密码登陆

    ssh认证的完整描述:https://www.ibm.com/developerworks/cn/linux/security/openssh/part1/ 说明:点我去查看 今天我们只说生成ssh的 ...

  4. linux centOS服务器部署ssh,免密码登陆linux

    登陆centos,切换用户,切换到你要免密码登陆的用户,进入到家目录 2 创建钥匙, [xun@jzlinux ~]$ ssh-keygen -t rsa Generating public/priv ...

  5. 配置ssh连接会话复用免密码登录

    我们经常使用ssh连接远程主机,为了方便,避免每次登录输入密码,通常使用密钥登录.如果没有设置密钥, 则需要使用密码登录了,若每次都输入密码则十分繁琐.我们可以设置ssh连接会话复用,则登录成功后,会 ...

  6. hadoop搭建杂记:Linux下ssh免密码登陆

    关于ssh免密码登陆的问题 关于ssh免密码登陆的问题 linux下可以用ssh-keygen来生成公钥/私钥对 ①生成id_rsa和id_rsa.pub公钥/私钥对,自动在~/.ssh下生成文件(亦 ...

  7. 实现一台Linux电脑连接另一台Linux(SSH实现linux之间的免密码登陆)

    怎么实现一台Linux电脑连接另一台Linux电脑? 首先查看是否安装ssh服务:systemctl status sshd.service 启动服务:systemctl start sshd.ser ...

  8. ssh keygen命令实现免密码通信(git库获取操作权限:开发人员添加到git库中,获取操作权限)

    先看两个机器实现免密码登陆通讯: 假设 A 为客户机器,B为目标机: 要达到的目的: A机器ssh登录B机器无需输入密码: 加密方式选 rsa|dsa均可以,默认dsa 做法: 1.登录A机器 2.s ...

  9. ssh key 免密码登陆服务器,批量分发管理以及挂载远程目录的sshfs

    ssh key 免密码登陆服务器,批量分发管理以及挂载远程目录的sshfs 第一部分:使用ssh key 实现服务器间的免密码交互登陆 步骤1: 安装openssh-clients [root@001 ...

随机推荐

  1. caffe-windows之手写体数字识别例程mnist

    caffe-windows之手写体数字识别例程mnist 一.训练测试网络模型 1.准备数据 Caffe不是直接处理原始数据的,而是由预处理程序将原始数据变换存储为LMDB格式,这种方式可以保持较高的 ...

  2. 【起航计划 032】2015 起航计划 Android APIDemo的魔鬼步伐 31 App->Search->Invoke Search 搜索功能 Search Dialog SearchView SearchRecentSuggestions

    Search (搜索)是Android平台的一个核心功能之一,用户可以在手机搜索在线的或是本地的信息.Android平台为所有需要提供搜索或是查询功能的应用提 供了一个统一的Search Framew ...

  3. idea 新建文件夹目录问题解决

    选中工程,设置,去掉选项“Compact Empty Middle Packages” .

  4. redis缓存技术在java中的应用

    https://blog.csdn.net/zhh1072773034/article/details/78538012

  5. 再学UML-深入浅出UML类图(四)

    实例分析1——登录模块 某基于C/S的即时聊天系统登录模块功能描述如下: 用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较, ...

  6. June 09th 2017 Week 23rd Friday

    The supreme happiness of life is the conviction that we are loved. 生活中最大的幸福就是,坚信有人爱着我们. One of my go ...

  7. Ubuntu环境安装Gradle

    AndroidStudio使用全新的构建系列—–Gradle. 这是官方为什么使用gradle 的理由: Domain Specific Language (DSL) to describe and ...

  8. Hibernate 一对一关联关系

    双向一对一关联关系: 域模型: 例如,部门只有一个部门经理,一个经理也只能管理一个部门.即,Department 中有一个Manager的引用,Manager 中又有一个Department 的引用. ...

  9. linux下时间同步的两种方法分享(转)

    与一个已知的时间服务器同步 代码如下: ntpdate time.nist.gov 其中 time.nist.gov 是一个时间服务器. 删除本地时间并设置时区为上海 复制代码 代码如下: rm -r ...

  10. MySQL:数据库入门篇2

    #移除主键时需要先解除递增,才能解除主键 alter table info modify id int null , drop PRIMARY key 一.用户权限 1.创建用户 create use ...