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登录成功,界面如下: