一:基于密钥的登录方式

(1)首先在客户端生成一对密钥(公钥、私钥)

(2)客户端将生成的公钥拷贝到需要访问的服务端机器上

(3)当客户端再此发送一个连接请求,包括IP,用户名

(4)服务端得到客户端的请求后,会到authroized_keys中查找,如果有相应的IP和用户,就会随机生成一个字符串,例如:qwer;

(5)服务端将使用客户端拷贝过来的公钥对随机字符串“qwer”,进行加密然后发送给客户端

(6)得到服务端发来的信息后,客户端会使用私钥进行解密,然后将解密的字符串发送给服务器

(7)服务器接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录。

python实现ssh爆破 ssh2-python_客户端


下面我将由node-1和node-2虚拟机进行描述

把node-1看成客户端,node-2看成服务器

python实现ssh爆破 ssh2-python_python实现ssh爆破_02


连接node-2:ssh root@192.168.79.130,输入yes,然后输入相应的密码,就会进入node-2,输入exit,就会返回node-1

python实现ssh爆破 ssh2-python_服务端_03


再此连接node-2,还是需要输入密码

python实现ssh爆破 ssh2-python_python实现ssh爆破_04


我们输入ps -ef | grep sshd,ssh-keygen -l rsa,我们会得到密钥随机的一对钥匙,拷贝至服务端

python实现ssh爆破 ssh2-python_字符串_05


python实现ssh爆破 ssh2-python_python实现ssh爆破_06


客户端向服务端发送请求,查看密钥的内容,输入ll -a,进入ssh,然后输入ll查看,其中有id_rsa.pub,id_rsa的一对密钥

python实现ssh爆破 ssh2-python_服务端_07

python实现ssh爆破 ssh2-python_客户端_08


输入ssh-copy-id 192.168.79.130,输入密码,服务端会进行核实,如果正确,则进入node-2,下次再进入时则免密

python实现ssh爆破 ssh2-python_服务端_09


python实现ssh爆破 ssh2-python_服务端_10


python实现ssh爆破 ssh2-python_SSH(二)_11


注:从服务端进入客户端则不能免密,所以,密钥是非对称的。

二:OpenSSH使用

OpenSSH是SSH协议的免费开源实现

OpenSSH是客户端和服务端的软件组成服务端是一个守护进程(daemon),他在后台运行并响应来自客户端的连接请求。服务端一般是sshd进程,提供了对远程连接的处理。

客户端包含ssh程序以及像scp(远程拷贝),slogin(远程登录),sftp(安全文件传输)等其他的应用程序。

默认情况下,centos系统会自带安装OpenSSH服务