SSH是什么

什么是SSH?

简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。本文针对的实现是OpenSSH,它是自由软件,应用非常广泛。这里只讨论SSH在Linux Shell中的用法。如果要在Windows系统中使用SSH,会用到另一种软件PuTTY,这需要另文介绍。

中间人攻击
SSH之所以能够保证安全,原因在于它采用了公钥加密
整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。
这个过程本身是安全的,但是实施的时候存在一个风险:如果有人截获了登录请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨别真伪。因为不像https协议,SSH协议的公钥是没有证书中心(CA)公证的,也就是说,都是自己签发的。
可以设想,如果攻击者插在用户与远程主机之间(比如在公共的wifi区域),用伪造的公钥,获取用户的登录密码。再用这个密码登录远程主机,那么SSH的安全机制就荡然无存了。这种风险就是著名的"中间人攻击"(Man-in-the-middle attack)。

ssh的安装

SSH分客户端openssh-client和openssh-server

如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudoapt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server。

Ubuntu缺省已经安装了ssh client。

公钥传输原理

  • 客户端发起链接请求。
  • 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)。
  • 客户端生成密钥对。
  • 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密。
  • 客户端发送加密后的值到服务端,服务端用私钥解密,得到Res。
  • 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)。
  • 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密。

两种验证方式

密码验证

对服务器中本地的用户登录名称,密码进行验证,简便,但可能会被暴力破解

密钥对验证

需求提供和匹配的密钥信息才能通过验证,通常现在客户端中创建一堆密钥(公钥 密钥),然后将公钥文件放在

使用SSH客户端程序

SSH优点

远程管理Linux系统基本上都要失业到ssh,原因很简单:telnet、FTP等传输方式是以明文传送用户认证信息,本质上是不安全的,存在被网络窃听的危险。SSH(Secure Shell)目前较可靠,是专为远程等; 会话和其他忘了服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题,通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗

  • 数据传输是加密的,可以防止信息泄漏
  • 数据传输是压缩的,可以提高传输速度

实验

安装SSH

 命令:sudo apt-get install openssh-client

安装ssh-client

命令:sudo apt-get install openssh-client

更新安装源

sudo apt-get update

安装服务器

sudo apt-get install openssh-server

查看ssh服务是否启动

sudo apt-get install openssh-server

输出显示有sshd,说明ssh服务已经启动,如果没有启动,输入"sudo service ssh start"-->回车-->ssh服务就会启动。

ssh配置

        通过修改配置文件/etc/ssh/sshd_config,可以改ssh登录端口和禁止root登录。打开配置文件并修改:

sudo gedit /etc/ssh/sshd_config

 把配置文件中的"PermitRootLogin without-password"加一个"#"号,把它注释掉-->再增加一句"PermitRootLogin yes"-->保存,修改成功。("PermitRootLogin yes"的含义是允许root用户登录)
        配置完成后重启ssh服务:

sudo srvice ssh reastart

四  开启ssh服务

        在终端敲入以下命令:

sudo srvice ssh star

       再执行查看ssh服务状态的命令:

sudo service ssh status

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

        如果出现以下提示:

ssh start/running, process 890

        说明你的ssh服务已经启动了。如果失败来的话,那试着卸载一下(看第六步:卸载ssh服务)再安装(第二部:安装ssh服务)。

五  使用ssh服务

        在两台主机(UBuntu16.04)都安装了ssh客户端和服务端之后,在作为ssh客户端的主机上执行以下命令,来远程控制作为ssh服务端(zhilan: 192.168.177.105)的主机:

sudo ssh zhilan@192.168.177.105

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值