知道ssh的朋友应该知道它是用来干什么的,如果你不知道什么是ssh远程登录的话,可以去看一下我的上一篇博客,关于linux的网络基础的知识。
备注:ssh是用于远端登入。执行ssh指令开启终端机阶段作业,并登入远端主机。

一、ssh远程登录

今天要和大家说的是,当我们一台客户机要远程登录到服务器的时候,输入密码才能登录成功。

过程流程图:

    

  所以我们在想能不能我们不需要输入密码,直接使用ssh 用户名@服务器ip就可以登录呢?

二、ssh免密登录原理

  

    看到这个图可能大家有一点蒙逼。我给大家解释一下。

    我们在主机A和主机B中分别使用ssh-lkeygen命令,生成用来加密的公钥和私钥。然后我们把主机A的公钥放到主机B下面的.ssh/authorized_keys文件当中。

    当我们下次使用ssh 用户名@服务器ip登录的时候,主机B呢就使用:主机A的公钥+主机B 的密码发送给主机A,然后主机A使用自己的私钥解密,得到主机B的密码,

    这样就实现了ssh免密登录的功能。

三、和ssh相关的远程拷贝命令scp

  3.1、命令说明

    进行远程拷贝

  3.2、命令语法

    scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 [...] [[user@]host2:]file2

    简易写法:scp [option(s)] source destination

  3.3、参数说明

      -1: 强制scp命令使用协议ssh1
           -2: 强制scp命令使用协议ssh2
           -4: 强制scp命令只使用IPv4寻址
           -6: 强制scp命令只使用IPv6寻址
           -B: 使用批处理模式(传输过程中不询问传输口令或短语)
           -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
           -p:保留原文件的修改时间,访问时间和访问权限。
           -q: 不显示传输进度条。
           -r: 递归复制整个目录。
           -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
            -c cipher:以cipher将数据传输进行加密,这个选项将直接传递给ssh。
            -F ssh_config:指定一个替代的ssh配置文件,此参数直接传递给ssh。
            -i  identity_file:从指定文件读取传输时使用的密钥文件,此参数传递给ssh。
            -l  limit: 限定用户所能使用的带宽,以Kbit/s为单位。
            -o  ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
            -P  port:注意是大写的P, port是指定数据传输用到的端口号
            -S  program:指定加密传输时所使用的程序。此程序必须能够理解ssh的选项。

  3.4、测试

   
  服务端

  

  如果远程拷贝的是目录的话,要加-r

四、免密登录的实现

  4.1、环境

  本人是使用的ubuntu17.04的版本的桌面版作为客户端,使用ubuntu的server版作为服务器端。

  4.2、实现过程

  注意:进行SSH免密登录的是两台机器的用户名相同例如有A、B两台机器,这两台机器上都有一个用户名同为zyh的用户。现在的需求是在A机器上通过免密(不输入密码,即免密)方式登录B机器。。我们可以直接使用:ssh 服务器端的ip登录。
     当用户名不相同的时候,就要使用:ssh 服务器端的用户名@服务器端的ip进行登录。在这里我本人的是两台机器用户名是相同的

      客户端:       服务器端:

  第一步:分别在A和B机器上使用命令“ssh-keygen”生成公钥和私钥。
                     执行该命令之后会在zyh用户的家目录下生成“.ssh/”目录和在该“.ssh/”目录下生成公钥“id_rsa.pub”文件和私钥“id_rsa”文件。

                       

    注意:公钥是用来加密的,私钥是用来解密的。

  第二步:将A机器上的zyh用户家目录下的.ssh/目录下的id_rsa.pub拷贝到B机器的zyh用户的家目录下(注意是家目录,不是.ssh目录)。

      命令:scp /home/zyh/.ssh/id_rsa.pub zyh@1.0.0.3:~
                     命令说明:将上述命令中的“B”更换为具体的主机名或者是IP。注意是拷贝到B机器上的briup用户的家目录,不是“.ssh”目录。

    

    这里是因为主机A和主机B使用的是同一个用户,所以没有使用zyh@1.0.0.3:~

    查看服务器端

    

  第三步:在B机器上,将刚刚从A机器上拷贝过来的“id_rsa.pub”(即B机器zyh用户家目录下的“id_rsa.pub”)的内容复制到B机器上的zyh家目录下的“.ssh”目录下的“authorized_keys”文件(注意:第一次使用的话,是没有这个文件的)中。
                        命令:cat /home/zyh/id_rsa.pub >> /home/zyh/.ssh/authorized_keys
                        命令说明:上述命令是在B机器上执行

    

  第四步:更改第三步执行命令所生成的“authorized_keys”文件的操作权限为600。(这是ssh协议所要求的)
                        命令:chmod 600 /home/zyh/.ssh/authorized_keys
                        命令说明:上述命令在B机器上执行

  

  第五步:在A机器上通过无密码登录B机器。
                        命令:ssh B
                        命令说明:上述命令在B机器上执行,将“B”更换为具体的主机名或IP地址。(这是在主机A和主机B用户名相同的情况)

    成功测试

  补充:在使用SSH工具进行远程登录的时候,如果登录的两个机器的用户名相同,可以直接使用命令“ssh 主机名/IP”来远程登录,而不需要输入用户名,即不需要以“ssh zyh@主机名/IP”这样的方式登录。

 

  

      

      

  

linux(十)配置ssh免密登录实现的更多相关文章

  1. 【Linux】配置SSH免密登录

    环境说明 假设我们有三台机器分别为bigdata111,bigdata112,bigdata113,三台机器均为centos 7系统. 配置SSH免密登录 (1)利用Xshell的发送键输入到所有会话 ...

  2. Linux系列——配置SSH免密登录

    ​ 在进行配置之前需要先关闭防火墙.配置hosts映射. 具体参见:Linux系列--常规基础操作 下面重点说明如何配置SSH: 1.编辑sshd服务配置文件,开启免密验证, vi /etc/ssh/ ...

  3. Linux虚拟机配置SSH免密登录

    本环境为CentOS 7(点击镜像下载iso文件),无图界面. 启动SSH服务 在/usr/sbin/有一个文件为sshd,然后输入绝对路径/usr/sbin/sshd即可开启ssh服务. 然后输入命 ...

  4. Ubuntu16.04下配置ssh免密登录

    Ubuntu16.04下配置ssh免密登录 环境准备:新建两台虚拟机,而且两台虚拟机上都装有Ubuntu16.04的系统,使两台虚拟机之间保持互通状态.分别为两台虚拟机命名为A,B.假设我们要使A虚拟 ...

  5. 记一次Xshell配置ssh免密登录时的问题

    问题: 今天在配置SSH免密登录连接自己的阿里云服务器,在将RSA加密生成的公钥放到服务器后,用Xshell连接服务,出现所选的用户密钥未在远程主机上注册这样的提示,一时懵逼,不知所措,后面终于找到了 ...

  6. 配置ssh免密登录遇到的问题——使用VMware多虚拟机搭建Hadoop集群

    搭建环境: 虚拟机 VMware12Pro      操作系统  centos6.8        hadoop 1.2.1 1.导入镜像文件,添加java环境 1.查看当前系统中安装的java,ls ...

  7. 【图文详解】linux下配置远程免密登录

    linux下各种集群搭建往往需要配置远程免密登录,本文主要描述了CentOs6.3系统下配置免密登录的详细过程. ssh远程登录,两种身份验证: 用户名+密码 密钥验证 机器1生成密钥对并将公钥发给机 ...

  8. Ubuntu如何配置SSH免密登录

    前言 在搭建hadoop集群时,需要主机和副机之间实现SSH免密登录 一.环境准备 1.ubuntu两台 二.安装SSH 1.首先检测一下本机有没有安装SSH服务,如果没有任何打印说明未安装 sudo ...

  9. 配置ssh免密登录后,仍需要密码才能登陆其中某台机器

    提示:如果是三台机器A.B.C配置了ssh免密登录,从A和B上登录C需要密码,则需要修改C的配置 修改配置文件如下: sudo vi /etc/ssh/sshd_config #禁用root账户登录, ...

随机推荐

  1. Spark笔记——技术点汇总

    目录 概况 手工搭建集群 引言 安装Scala 配置文件 启动与测试 应用部署 部署架构 应用程序部署 核心原理 RDD概念 RDD核心组成 RDD依赖关系 DAG图 RDD故障恢复机制 Standa ...

  2. 2017年1月1日 App Store中的所有应用都必须启用 App Transport Security安全功能

    2017年1月1日 App Store中的所有应用都必须启用 App Transport Security安全功能,否则极有可能被拒! 在WWDC 2016开发者大会上,苹果宣布了一个最后期限:到20 ...

  3. 亚马逊AWS EC2云实例AMI安装LNMP环境(3)——Mysql5.5

    概括:这里选择亚马逊EC2的Linux AMI实例,该Linux服务器是亚马逊预配置的Linux环境,内置多个YUM源,属于亚马逊首推的稳定Linux服务器.默认登录用户名为ec2-user,执行ro ...

  4. JavaScript中的call()、apply()与bind():

    关于call()与apply(): 在JavaScript中,每个函数都有call与apply(),这两个函数都是用来改变函数体内this的指向,并调用相关的参数. 看一个例子: 定义一个animal ...

  5. .NET 微服务和Docker容器

    .NET 微服务:适用于容器化 .NET 应用的体系结构 容器和 Docker 简介 什么是 Docker? Docker 术语 Docker 容器.映像和注册表 为 Docker 容器选择 .NET ...

  6. ios-->制作ipa文件

    用证书进行真机调试并生成二级制文件,通常位于:/Users/.../Library/Developer/Xcode/DerivedData/XXXXXDemo-gmtamkryoesxilartayu ...

  7. vue 组件开发

     作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.新建路由:router-->index.js,修改成下面的代码 import Vue from 'vu ...

  8. Appium总结

    运行case前,最好在case前加入等待,以免activity还未关闭,就开始定位或其他操作(如果case总报错,则考虑此问题): swipe效果: Thread.sleep(2000);       ...

  9. SQL SERVER镜像切换

    --SQL SERVER镜像切换 ------------------------------2013/11/30 切换条件   高性能 没有见证服务器的高安全性模式 具有见证服务器的高安全性模式 自 ...

  10. 设计模式,Let's Go! (上)

    * { color: #3e3e3e } body { font-family: "Helvetica Neue", Helvetica, "Hiragino Sans ...