ssh:一种网络协议,用于计算机之间的加密登录。
如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
在kali里配置以下命令:
apt-get update
apt-get install ssh :命令安装 SSH 包
vim /etc/ssh/sshd_config:修改sshd_config文件,然后保存退出
PermitRootLogin yes
PasswordAuthentication yes //添加或者修改这两行
/etc/init.d/ssh start或者service ssh start :重启ssh
ifconfig:然后查看ip,内网IP,PC需要与kali在同一个局域网中
ps -e | grep ssh :查看ssh运行状态
update-rc.d ssh enable :开机自启动
在xshell里配置连接:
登录xshell-新建窗口
配置完成后验证
在xshell中,使用ssh服务,
ssh user@host
验证是否使用了ssh服务【基于公钥的验证】
验证解析:
(1)客户端向服务端发起登录请求:ssh username@hostname
(2)服务端收到客户端的请求后,把自己的公钥发送给客户端;(服务端的公钥保存在/etc/ssh/*.pub里面)
(3)当客户端第一次收到该服务端发送过来的公钥时,为了防止中间人攻击(发送公钥的主机不是服务端,而是拦截了客户端登录请求的主机),客户端主机会有系统提示:
上面的信息说的是:无法确认主机ssh-server.example.com(12.18.429.21)的真实性,不过知道它的公钥指纹,是否继续连接?之所以用fingerprint代替key,主要是key过于长(RSA算法生成的公钥有1024位),很难直接比较。所以,对公钥进行hash生成一个128位的指纹,这样就方便比较了。
如果输入 yes 后,会出现如下信息
Warning: Permanently added 'ssh-server.example.com,12.18.429.21' (RSA) to the list of known hosts.
Password: (enter password)
该host已被确认,并被追加到文件 known_hosts 中,然后就需要输入密码。(当 known_hosts 存储了服务端的公钥之后,客户端后续连接该服务端就会比对存储在 known_hosts 文件里的公钥,从而确认是否为该服务端发来的公钥)
(4)客户端输入密码,使用服务端发来的公钥进行加密,发送给服务端;
(5)服务端收到客户端的加密信息,使用自己的私钥进行解密比对,比对正确就给客户端响应。