• 传统的网络服务程序,如rsh、FTP、POP和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。
  • 而SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。
  • SSH之另一项优点为其传输的数据可以是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、POP、甚至为PPP提供一个安全的“通道”。

1. ssh 协议框架中最主要的部分是三个协议:


  • 传输层协议:提供 服务器认证 ,数据机密性,信息完整性等支持。
  • 用户认证协议:为服务器提供客户端的身份鉴别。
  • 连接协议:将加密的信息隧道复用成若干个逻辑通道,提供给更高层的应用协议使用。

2. ssh 的安全验证:


a. 基于密码

  • 对于客户端来说:知道账号和密码即可登录到远程主机,并且所有传输的数据都会被加密。但是:可能会有别的服务器冒充真正的服务器!这种方式无法避免被【中间人】攻击
  • 对于服务器端,主机将自己的功用密钥分发给相关的客户端,客户端在访问主机时则使用该主机的公开密钥来加密数据。主机则使用自己的私有密钥来解密数据,从而实现主机密钥认证,确保数据的保密性。

b. 基于密钥

  • 客户端需要为自己创建一对密钥,并将公有密钥放到需要访问的服务器上。客户端软件向服务器服务器发出请求,请求用客户端自己的密钥进行安全验证。
  • 服务器端在收到请求以后,先在发送请求客户端的用户根目录下寻找客户端的公用密钥,然后把它和客户端发送过来的公有密钥进行比较,如果两个密钥一致,服务器就用公有密钥加密【质询】(challenge)并把它发送给客户端软件。从而能够避免被【中间人】攻击。
  • 在这种方案中,需要存在一个密钥认证中心,所有提供服务的主机都将自己的公开密钥提供给认证中心,而任何作为客户端的主机则只要保存一份认证中心的公开密钥就可以了。这种模式下,客户端必须访问认证中心然后才能访问服务器主机。

3. 使用XShell连接服务器(SSH模式)


a. 在XShell上生成密钥对(客户端创建自己的密钥对)

  • 打开Xshell,在菜单栏点击“tools”,在弹出的菜单中选择“User Key Generation Wizard...”(密钥生成向导);
  • 弹出“User Key Generation Wizard”对话框,在“Key Type”项选择“RSA”公钥加密算法,“Key Length”选择为“2048”位密钥长度;
  • 点击“Next”,等待密钥生成;
  • 继续下一步,在“Key Name”中输入Key的文件名称,我这里为“key”;在“Passphrase”处输入一个密码用于加密私钥(密码A,下面会用到),并再次输入密码确认;
  • 点击“Next”,密钥生成完毕(Public key Format选择SSH2-OpenSSH格式),这里显示的是公钥,我们可以复制公钥然后再保存,也可以直接保存公钥到文件,如下图。私钥这里不显示,可以在“User Key Mangager...”导出到文件;
  • 点击“Save as file...”按钮,将公钥(Public key)保存到磁盘,文件名为“key.pub”,备用。

b. 将密钥上传公钥(Public Key)到服务器(服务器配置客户端公钥,这里的用户为 root)

  • 使用到Xshell登录到服务器,进入到“/root/.ssh/”目录,运行rz命令(如果没有rz命令,运行yum install lrzsz安装),将key.pub发送到服务器,然后运行如下命令,将公钥(Public Key)导入到“authorized_keys”文件:
[root@localhost ~]# cd /root/.ssh/
[root@localhost .ssh]# rz
rz waiting to receive.
[root@localhost .ssh]# cat key.pub >> authorized_keys
[root@localhost .ssh]# chmod 600 authorized_keys
[root@localhost .ssh]# ls
authorized_keys key.pub
  • 使用命令 ifconfig 查看服务器的 ip 地址,并记录下来留下面使用。

c. 配置Xshell使用密钥认证方式登录到服务器

  • 打开Xshell,点击“New”按钮,弹出“New Session Properties”对话框,在“Connection”栏目中,输入刚刚配置好公钥(Public Key)的IP地址和端口;
  • 点击左侧的“Authentication”,切换到认证栏目,在“Method”选择“Public Key”认证,用户名输入“root”(公钥是放在root目录下的.ssh文件夹中),在“User Key”中选择我们刚才生成的私钥“key”,“Passphrase”中输入私钥的加密密码(密码A);
  • 点击确定,Xshell配置ssh免密码登录配置完成。

4. Linux下使用命令(ssh-keygen)生成密钥对

~$ ssh-keygen -t rsa

5. 阻止基于密码登陆的方式(只允许SSH登陆)

首先要已经设置好了允许 SSH 登录,并已经以SSH方式登录到了系统。

~$ su	# 切换到root
~$ vim /etc/ssh/sshd_config
# 此时因为使用 SSH 登陆,下面的应该已经设置:
# RSAAuthentication yes
# PubkeyAuthentication yes
# PermitRootLogin yes
# 默认情况下密码登录是 yes :
# PasswordAuthentication yes
# 要禁用的话改成 no :
# PasswordAuthentication no
# 推出 vim 后重启 SSH 服务
~$ service sshd restart

附录

SSH 学习记录及在SSH模式下使用XShell连接服务器的更多相关文章

  1. NodeJs学习记录(二)win7下 配置node连接oracle的环境

    2017/01/23 星期一 前言:还没看几眼教程,就开始分配任务,涉及到连oracle数据库,所以顺便把整个环境的配置放上来 安装文件清单(1).node-v6.9.1-x64.msi(2).pyt ...

  2. Liunx中三种网络模式配置及Xshell连接

    Liunx网络配置 NAT模式下的网络配置: 首先打开网络配置文件:vi   /etc/sysconfig/network-scripts/ifcfg-ens33 修改网卡信息,配置动态Ip过程中,只 ...

  3. CAS (6) —— Nginx代理模式下浏览器访问CAS服务器网络顺序图详解

    CAS (6) -- Nginx代理模式下浏览器访问CAS服务器网络顺序图详解 tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 nginx版本: nginx-1. ...

  4. usb-host一步一步学(二)安卓在usb-host模式下列出当前连接的usb设备

    之前写了一个简单的例子usb-host一步一步学(一)安卓在usb-host模式下列出当前连接的usb设备,下面的这个例子是获取各种usb设备.usb接口以及usb连接点(endpoint) 正如上一 ...

  5. Linux配置SSH和Xshell连接服务器

    >>>>>Ubuntu安装和配置ssh教程 SSH分为客户端 openssh-client 和服务器 openssh-server,可以利用以下命令确认电脑 上是否安装了 ...

  6. MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB数据

    看到下图,是通过Jqgrid实现表格数据的基本增删查改的操作.表格数据增删改是一般企业应用系统开发的常见功能,不过不同的是这个表格数据来源是非关系型的数据库MongoDB.nosql虽然概念新颖,但是 ...

  7. Window下使用Xshell连接VirtualBox中CentOS SSH最佳实践

    网上已经有非常多讲怎样连接VMware的文章.可是针对一些可能遇到的细节没有讲全. 这里会有一个非常 实际的样例,附带全部软件的链接,保证成功. 最佳实践什么的都是骗人的. 1.安装VirtualBo ...

  8. vueHistory 模式下,布置到服务器上路由刷新会报nginx404错误

    之前写完vue项目后,布置到服务器,用nginx反向代理后,一开始进去,进各种路由都是没问题的,但是一旦f5刷新后就会出现一个nginx404的错误. 经过翻阅vue文档后,发现这是vueHistor ...

  9. 痞子衡嵌入式:揭秘i.MXRT600的ISP模式下用J-Link连接后PC总是停在0x1c04a的原因(Debug Mailbox)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT600中的Debug Mailbox实现对JLink调试的影响. 事情缘起痞子衡的同事 - 喜欢打破砂锅问到底的Kerry小 ...

随机推荐

  1. 子查询及pymysql

    子查询 子查询指的是当一个查询语句被作为另一个查询语句的条件时,该查询语句就称之为子查询(内层查询) 可以将一个大问题 拆分几个小的问题 然后一步一步来查询 需求:财务不有哪些人 ),sex ),jo ...

  2. python3.6 request模块和ddt模块的安装

    1.1用cmd命令进到python的安装目录的Scripts文件夹 1.2.然后输入 pip install requests,出现以下提示,说明安装成功 2.安装ddt步骤一样,只是把pip ins ...

  3. PIE SDK常用滤波

    1. 算法功能简介 空间域滤波实在图像空间( x. y)对输入图像应用滤波函数(核.模板)来改进输出图像的处理方法,主要包括平滑和锐化处理,强调像素与其周围相邻像素的关系,常用的方法是卷积运算. 空间 ...

  4. sql语句中开窗函数的使用

    开窗函数主要分为2类: 1.排序开窗函数: rank() over(partition by xxx order by yyy) //各分区按照yyy字段排序,如果yyy字段值一样,则rank值一样, ...

  5. Oracle 更改归档文件到ASM磁盘

    01,配置磁盘路径

  6. TOJ 3184 Mine sweeping

    描述 I think most of you are using system named of xp or vista or win7.And these system is consist of ...

  7. 数据挖掘:基于Spark+HanLP实现影视评论关键词抽取(1)

    1. 背景 近日项目要求基于爬取的影视评论信息,抽取影视的关键字信息.考虑到影视评论数据量较大,因此采用Spark处理框架.关键词提取的处理主要包含分词+算法抽取两部分.目前分词工具包较为主流的,包括 ...

  8. js 中移动元素的方法

    2017-12-13 19:59:24 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  9. Prometheus TSDB分析

    Prometheus TSDB分析 概述 Prometheus是著名开源监控项目,其监控任务调度给具体的服务器,该服务器到目标上抓取监控数据,然后保存在本地的TSDB中.自定义强大的PromQL语言查 ...

  10. .net mvc 设置div的动态部分视图内容 dynamic partial view

    示例效果:点击按钮,在div中 显示不同的partial view的内容 $("#btnEdit").click(function () { //动态获取相应的部分视图 var u ...