Linux SSH

前言:

在实际的生产环境中,运维人员经常要使用本地的计算机对远程主机进行控制工作,TCP/IP协议提供了两种协议来完成这样的操作,分别为Telnet协议和SSH协议。

由于Telnet本身的安全性缺陷(明文传输),当黑客捕捉到数据包后,就会泄露用户名和密码,已经逐渐在生产环境中被淘汰掉。

所以今天我们主要来探究SSH连接的两种方式,并在虚拟机进行实现。此外尝试使用Python编写基础的SSH远程控制程序。


SSH简介:

什么是SSH,SSH是用于客户端和服务器端的沟通。在服务器上,SSH协议生成的软件以守护进程的方式在后台存在,当客户端进行链接的时候对其进行响应。可以简单的将SSH理解为连接客户端和服务器端的管道。

如何开启和实现SSH通信,是我们要研究的问题。

SSH认证方式:

当客户端尝试连接服务器端的时候,服务器会对其进行安全认证,从而获取认证信息。SSH提供了两种认证方式,分别为基于口令的安全认证和基于密钥的安全认证。

基于口令的安全认证:

基于口令的认证本质上还是'账户'+'密码'的认证,当输入了正确用户信息后,服务器端通过了认证才可以接受控制请求。

基于密钥的安全认证:

基于密钥的认证使用了公私钥来进行验证。首先服务器端和客户端都配置使用了公钥,而私钥仅由客户端保存。当客户端尝试连接服务器的时候,会首先将自己的公钥发送给服务器端,当服务器端对比客户端与自己所存储的公钥一致后,会向客户端发送检查信息,这个检查信息需要客户端使用私钥进行解密,继而应答服务器的消息进行确认验证。

SSH连接实现:

前置条件:首先必须要有SSH连接的应用软件,市面上比较典型的有Xshell、Finalshell、Bitvise.下载地址分别如下:

Finalshell:http://www.hostbuf.com/t/988.html

Bitvise:https://www.wmzhe.com/soft-19339.html

Xshell:https://www.xshellcn.com/

在本博客中我使用的是Finalshell,因为其背景可以设置,相比其他两款软件无论是优化还是产品设计都更好一点,正常使用页面如下。具体的Finalshell使用方法详见官网。

现在我们来研究使用Kali-Linux两种方法如何连接上SSH

①:基于口令认证的方式:

首先进入root权限,使用vi修改/etc/ssh/sshd_config文件,修改如下两处

1|#PasswordAuthentication no
修改为:
PasswordAuthentication yes
2|PermitRootLogin without-password
修改为:
PermitRootLogin yes

保存后退出vi.

然后在root权限下,启用SSH服务,命令如下

service ssh start
继而设置开机SSH作为守护进程自启动,命令如下:
update-rc.d ssh enable
此时通过SSH设置相应的IP地址,输入用户名与密码即可SSH连接成功。

②:基于口令的认证方式

首先在root权限下,打开密钥登录的功能,编辑/etc/ssh/sshd_config文件进行如下修改

1|#PubkeyAuthentication no
修改为
PubkeyAuthentication yes
2|PermitRootLogin without-password
修改为:
PermitRootLogin yes
3|#AuthorizedKeysFile .ssh/authorized_keys
去除前面的#注释符

然后设置密钥对,命令与选择如下,其中需要输入内容的地方可以直接按下Enter留空:

ssh-keygen -t rsa -b 4096 -m PEM
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:nloGAzevmrE1XNIwzn37L1aQoreQe9ditfSynWYJURg root@kali

此时产生的公钥和私钥都存在/root/.ssh/目录下,接下来我们需要在服务器上安装公钥,命令如下

cd /root/.ssh/
cat id_rsa.pub >>authorized_keys
chmod 600 authorized_keys
chmod 700 ~/.ssh

然后将私钥id_rsa下载到客户端上

设置登录的连接方式是密钥登录,设置用户名为root,载入私钥并输入添加私钥时设置的密码,使用SSH登录连接,发现登录成功。

最终发现SSH登录成功,界面如下:

Linux-SSH介绍与认证方式的更多相关文章

  1. Java 实现 SSH 协议的客户端登录认证方式--转载

    背景 在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了解.首先要提到的就是计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不同计算机之间 ...

  2. Git认证方式https和ssh的原理及比较

    常见的代码托管平台GitHub.GitLab和BitBucket等,基本都会使用Git作为版本控制工具.平台一般都提供两种认证方式https和ssh.了解该过程能够更加自由的配置和使用,本文就来简单聊 ...

  3. Linux中ssh介绍与ssh+key密钥登陆部署

    环境内核信息: [root@zabbix- ~]# uname -a Linux zabbix- -.el6.x86_64 # SMP Tue Mar :: UTC x86_64 x86_64 x86 ...

  4. Linux ssh双向免密认证

    一.实现原理 使用一种被称为"公私钥"认证的方式来进行ssh登录."公私钥"认证方式简单的解释是: 首先在客户端上创建一对公私钥(公钥文件:~/.ssh/id_ ...

  5. Mac Item2 SSH免密登录Linux 服务器的两种方式

    转自http://blog.csdn.net/jobschen/article/details/52823980 mac ssh登录linux服务器 的两种方式: 个人推荐第二种,zsh方式,只需要把 ...

  6. Linux内核驱动开发之KGDB原理介绍及kgdboe方式配置

    接博文<Linux内核驱动开发之KGDB单步调试内核(kgdboc方式)>.上篇博文中,仅简单介绍使用串口的Kgbd的流程(kgdboc方式),本文将重点介绍KGDB调试Linux内核的原 ...

  7. HTTP几种认证方式介绍

    HTTP提供了一套标准的身份验证框架:服务器可以用来针对客户端的请求发送质询(challenge),客户端根据质询提供身份验证凭证.质询与应答的工作流程如下:服务器端向客户端返回401(Unautho ...

  8. linux ssh key配置方法

    转自:http://blog.csdn.net/zzk197/article/details/7915307 一:简洁的配置文件[root@cisco ~]# vi /etc/ssh/sshd_con ...

  9. 大数据【一】集群配置及ssh免密认证

    八月迷情,这个月会对大数据进行一个快速的了解学习. 一.所需工具简介 首先我是在大数据实验一体机上进行集群管理学习,管理五台实验机,分别为master,slave1,slave2,slave3,cli ...

随机推荐

  1. 数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?

    从马车到汽车是为了提升运输效率,而随着时代的发展,如今我们又希望用自动驾驶把驾驶员从开车这项体力劳动中解放出来,增加运行效率,同时也可减少交通事故发生率,这也是企业对于智能运维的诉求. 从人工运维到自 ...

  2. 按照自己的思路去研究Spring AOP源码【1】

    目录 一个例子 Spring AOP 原理 从@EnableAspectJAutoProxy注解入手 什么时候会创建代理对象? 方法执行时怎么实现拦截的? 总结 问题 参考 一个例子 // 定义一个切 ...

  3. xPath,beautifulsoup和pyquery

    一.XPath from lxml import etree html = etree.parse('html源代码',etree.HTMLPaser()) 1.节点的获取 a.html.xpath( ...

  4. Java并发-同步容器篇

    作者:汤圆 个人博客:javalover.cc 前言 官人们好啊,我是汤圆,今天给大家带来的是<Java并发-同步容器篇>,希望有所帮助,谢谢 文章如果有问题,欢迎大家批评指正,在此谢过啦 ...

  5. 【推荐】Excel在线转其他格式(json/sql/xml...)

    https://tableconvert.com/?output=asp 文件导入功能不好用,直接粘贴表格内容(加表头),然后无敌好用!可转化各种格式. 看看这个SQL语句,感动了

  6. hdu1839 二分最短路

    题意:       给你n个城市,m条双向边,每条边有自己的长度和最大运输量,让你找到一条时间小于等于T的运输能力最大的那条路... 思路:       刚开始以为是费用流呢,后来发现根本不是,因为根 ...

  7. Linux中的防火墙(Netfilter、Iptables、Firewalld)

    目录 Netfilter Iptables iptables做本地端口转发 Firewalld Netfilter Netfilter是Linux 2.4内核引入的全新的包过滤引擎,位于Linux内核 ...

  8. 逆向 ctype.h 函数库 isalnum、iscntrl、islower、isxdigit、tolower 函数

    0x01 isalnum 函数 函数原型:int isalnum(int c); 函数功能:检查所传的字符是否是字母和数字 动态链接库:ucrtbase.dll C\C++ 实现: #define _ ...

  9. Android 面试必备 - 系统、App、Activity 启动过程“一锅端”

    Android 系统启动过程 从系统层看: linux 系统层 Android系统服务层 Zygote 从开机启动到Home Launcher: 启动bootloader (小程序:初始化硬件) 加载 ...

  10. DVWA--SQL Injection

    sql注入是危害比较大的一种漏洞,登录数据库可以进行文件上传,敏感信息获取等等. Low 先来看一下源码 <?php if( isset( $_REQUEST[ 'Submit' ] ) ) { ...