注意:sshd_config配置文件有些特殊:
注释掉的选项,并不是不生效的,而是默认生效选项。
使用某选项时,要先取消注释,再修改为yes或no
关于效率和安全的说明:
安全:telnet < ssh单向 < ssh双向加密
效率:telnet > ssh单向 > ssh双向加密
要安全,丢效率

1.环境准备
①准备好两台Linux操作系统的主机,配置好相关网络参数,实现可以正常通信,并将主机名修改为不同的名字
⑴临时关闭防护功能:
iptables -F ;setenforce 0 #清空防火墙规则,临时关闭SELinux
⑵永久关闭防护功能:
chkconfig iptables off #设置防火墙开机不自启动
sed -i ‘7s/enforcing/disabled/’ /etc/selinux/config #永久关闭SELinux
注意:以上两条命令执行后,需要重启服务器才能生效,切记
②用户密码验证
Linux主机之间的远程管理工具是ssh命令,所以我们直接使用ssh进行远程登录
格式-------ssh 用户名@IP地址 【端口号】
e.g. ssh root@192.168.88.20
windows远程登录Linux主机一般使用第三方工具,比如Xshell等工具
格式-----ssh root@192.168.88.10

实验一:单向加密

㈠windows--linux[以Xshell为例]

 解释:绿色的为连接指令,紫色的为公钥,红色部分为公钥文件记录类型,一次代表使用结束后自动删除,接收并保存代表后期一直可用,取消则直接断开连接

查看公钥位置:

点击查看,可查看具体的公钥内容

单向加密结束,后期的所有文件都强制加密后发送。

2.密钥对验证

Linux主机之间的密钥对登录验证
①客户端生成密钥对文件
ssh-keygen -t rsa -b 2048
-t 指定加密类型(rsa/dsa等)
-b 指定密钥对加密长度
询问1:执行过程中会询问保存位置,一般默认保存在当前用户家目录下的.ssh/目录下
询问2:是否对密钥文件进行加密
加密:若加密,则在调用密钥文件时需要先验证密钥的密码,密码正确才能使用密钥文件
不加密:若不加密,则密钥文件可以直接被调用,整个登录验证过程无需输入任何密码,即免密登录
②将公钥文件上传至服务器端
ssh-copy-id 用户名@服务器IP地址
若服务器端修改了端口则采用 ssh-copy-id "-p 端口号 用户名@服务器IP地址"
-i 指定上传的公钥文件位置和名字{不指定时是:id_rsa.pub}
#该用户名和要用来登录服务器的用户名一致
③客户端尝试登录服务器
ssh 用户名@服务器IP地址
#密钥对验证优先级大于账户密码验证

实验二:linux--linux[Xshell示例]
⑴两台已连接状态的虚拟机xshell

充当客户端的虚拟机xshell ip地址

⑵用 ssh root@192.168.88.10 连接服务器端

需要先接受公钥,再输入密码,才能验证完成登入
Linux客户端接收了公钥文件后,会将公钥文件存放的路径:~/.ssh/known_hosts

#所有登录服务器的客户端所接收的公钥就是同一个文件

⑶登入后查IP验证

实验三:使用命令进行密钥对共享

Linux主机之间的密钥对登录验证,单向加密情况下,需输入密码验证身份

①客户端生成密钥对文件
执行命令 ssh-keygen -t rsa -b 2048 生成公钥文件

②将公钥文件上传至服务器端
执行命令 ssh-copy-id root@192.168.88.10 将公钥发给服务器端,并创建相关文件

③客户端尝试登录服务器
exit退出后,再执行 ssh root@192.168.88.10 登录服务器

 #密钥对验证优先级大于账户密码验证

3.Windows使用密钥对登录Linux
①使用Xshell自带的密钥对生成向导生成密钥对
②将公钥导入Linux主机的指定用户下的指定公钥配置文件内
后面用哪个用户登录就放在谁家里,这里我们先用root用户做实验
#authorized_keys可以存取多个公钥,但每个公钥只占一行
在root家目录下,找到 .ssh 目录,然后在里面创建 authorized_keys 文件,并且将公钥写入进去
#要注意.ssh目录的权限是:700;root和普通用户的.ssh目录 700 和authorized_keys 文件是600权限即可。
③使用windows尝试登录指定用户

实验四:双向加密windows--linux
⑴生成公钥

⑵公钥查看

#若直接导出为私钥

⑶修改linux的公钥文件

修改下列选项,并新建.ssh/authorized_keys文件[也可不修改,此处为默认]

将公钥内容写入文件中(注意为一行),并重启sshd服务(service sshd restart)

⑷重新利用Xshell登入linux系统,选公钥登录,实现免密登录

错误整理:在linux下,所有秘钥相关文件配置正确,但仍无法使用公钥对免密登录

⑴可能原因:文件及文件夹权限问题
权限要求如下:
~/.ssh/authorized_keys: 此文件要求权限为600
~/.ssh: 此文件夹要求权限为700
⑵可能原因:selinux开启导致
selinux开启时,普通用户可以登陆,但root不允许登陆
解决方案:关闭selinux
临时关闭 setenforce 0
# 永久关闭vi /etc/selinux/config 将SELINUX状态改为disabled

ssh配置方面小实验①的更多相关文章

  1. ssh配置方面小实验②

    4.禁止使用密码登录当我们学会了使用密钥对进行验证后,建议生产环境下将账户密码登录功能关掉配置文件:/etc/ssh/sshd_config选项: PasswordAuthentication no ...

  2. Hadoop之词频统计小实验

    声明:    1)本文由我原创撰写,转载时请注明出处,侵权必究. 2)本小实验工作环境为Ubuntu操作系统,hadoop1-2-1,jdk1.8.0. 3)统计词频工作在单节点的伪分布上,至于真正实 ...

  3. MongoDB 主从复制小实验

    MongoDB 主从复制小实验 操作环境描述:WIN8  64位操作系统,内装虚拟机为CentOS 5.5 32位系统. 操作描述:跟其他关系型数据库类似,在主库进行数据操作,将数据同步到从节点,从节 ...

  4. SSH配置免秘钥登录

    一.  SSH 配置免秘要登录 配置SSH 免秘要登录,虽然就那么几步,但总是会出现点小问题,今天就做下记录.SSH 免秘钥就是让两台机器相互信任,不需要输入密码就能相互登录.配置相互信任就是把各自的 ...

  5. 秒懂JVM的三大参数类型,就靠这十个小实验了

    秒懂JVM的三大参数类型,就靠这十个小实验了 你好,我是悟空哥,「7年项目开发经验,全栈工程师,开发组长,超喜欢图解编程底层原理」.手写了2个小程序,Java刷题小程序,PMP刷题小程序,已发布到公众 ...

  6. mysql+ssh 配置(转载)

    Mysql+ssh配置 一.Linux平台间mysql+ssh配置 本机地址为:192.168.189.133 mysql服务器地址为:192.168.189.139 linux命令行下使用ssh命令 ...

  7. Ngrok远程桌面及ssh配置

    上一篇Ngrok 内网穿透利器 使用教程我们讲到Ngrok的基本使用教程,这篇描述一下Ngrok的远程桌面及ssh配置 Step 1 修改配置文件ngrok.cfg server_addr: &quo ...

  8. PBR综合小实验视频-狮子XL

    这个是上学时候录的一个策略路由小实验

  9. centos ssh配置使用

    配置 数据阶梯 CentOS SSH配置 默认CentOS已经安装了OpenSSH,即使你是最小化安装也是如此.所以这里就不介绍OpenSSH的安装了. SSH配置: 1.修改vi /etc/ssh/ ...

随机推荐

  1. 【Oracle】Oracle中chr()的含义

    oracle中chr含义 CHR(10)和 CHR(13)--在oracle都为换行 chr(32)--表示空格 DECLARE v_a VARCHAR2(255); v_b VARCHAR2(255 ...

  2. SDUST数据结构 - chap9 排序

    判断题: 选择题: 编程题: 7-1 排序: 输入样例: 11 4 981 10 -17 0 -20 29 50 8 43 -5 输出样例: -20 -17 -5 0 4 8 10 29 43 50 ...

  3. pandas DataFrame的新增行列,修改、删除、筛选、判断元素以及转置操作

    1)指定行索引和列索引标签 index 属性可以指定 DataFrame 结构中的索引数组,  columns 属性可以指定包含列名称的行, 而使用 name 属性,通过对一个 DataFrame 实 ...

  4. 关于安装版JDK1.8 1.7更改多个JDK环境变量 不生效

    配置maven(apache-maven-3.3.9)时提示异常:'mvn' 不是内部或外部命令,上网查找得知 它不支持jdk1.8,所以重新安装jdk1.7,后来就出现下面的问题 现象: 当使用安装 ...

  5. 什么是Etcd,如何运维Etcd ?

    介绍 ETCD 是一个分布式.可靠的 key-value 存储的分布式系统,用于存储分布式系统中的关键数据:当然,它不仅仅用于存储,还提供配置共享及服务发现:基于Go语言实现. ETCD的特点 简单: ...

  6. 一种优化递归算法的方法(javascript)

    看书的时候看到了这个比较酷的方法,分享一下. 一.问题描述:代码如下,我们以计算阶乘(factorial)为例,当重复调用factorial(9),factorial(8),factorial(7)的 ...

  7. ubuntu 14.04下安装 mysql-workbench

    直接在命令行下运行下面命令: sudo apt-get install mysql-workbench 安装完,都可以在Dash中找到 "mysql" 就点击应用打开. 在data ...

  8. 墓碑机制与 iOS 应用程序的生命周期

    ① 应用程序的状态 iOS 应用程序一共有 5 种状态: Not running:应用未运行 Inactive:应用运行在 foreground 但没有接收事件 Active:应用运行在 foregr ...

  9. (Oracle)导出表结构

    DECLARE cursor t_name is SELECT rank() over(order by a.TABLE_NAME) as xiaolonglong,a.TABLE_NAME FROM ...

  10. JavaScript 类型、原型与继承学习笔记

    目录 一.概览 二.数据类型 1. JavaScript中的数据类型 2. 什么是基本类型(Primitive Data Type) 2.1 概念 2.2 七个基本类型 2.3 基本类型封装对象 3. ...