ssh原理与使用

ssh原理与使用

概念

Secure Shell(SSH) 是由 IETF(The Internet Engineering Task Force) 制定的建立在应用层基础上的安全网络协议。是专为远程登录会话(甚至可以用Windows远程登录Linux服务器进行文件互传)和其他网络服务提供安全性的协议,可有效弥补网络中的漏洞。通过SSH,可以把所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。另外,传输的数据是经过压缩的,所以可以加快传输的速度。ssh目前已经成为Linux系统的标准配置。

  • 明文:需要秘密传送的消息。
  • 密文:明文经过密码变换后的消息。
  • 加密:由明文到密文的变换。
  • 解密:从密文恢复出明文的过程。
  • 破解:非法接收者试图从密文分析出明文的过程。
  • 加密算法:对明文进行加密时采用的一组规则。
  • 解密算法:对密文进行解密时采用的一组规则。
  • 密钥:加密和解密时使用的一组密码信息。
  • 对称加密:是采用单钥密码系统的加密方法,使用同一密钥对信息进行加密和解密的加密方法。
    · 客户端向SSH服务器发出请求,服务器将自己的公钥返回给客户端。
    · 客户端用服务器的公钥加密自己的登录密码,再将信息发送给服务器。
    · 服务器接收到客户端传统的密码,用自己的私钥解码。如果结果正确,则同意登录,建立起连接,否则拒绝。
  • 非对称加密:需要两个密钥:公共密钥和私有密钥,它们成对出现,公钥加密的数据有且只有私钥能解密,私钥加密的数据有且只有公钥解密,“非对称加密”加密方法加密和解密使用不同的密钥。
  • 对称/非对称加密的区别:加密和解密是否使用的同一个密钥。

加密、身份认证、数字签名认证

  • 加密:将数据资料加密,使得非法用户即便获取加密后的资料,也无法获取正确的资料内容,所以数据加密可以保证数据防止监听攻击;其重点在于数据的安全性
  • 身份认证:判断某身份的真实性,确认身份后,系统才可以依不同的身份赋予不同的权限;其重点在于用户的真实性
  • 数字签名认证:"数字签名"是附加在数据单元上的一些数据,或对数据单元所作的密码变换(允许接收者判断数据的来源和数据的完整性,防止被伪造篡改)。数字签名认证侧重于保证数据的完整性,防止被伪造和篡改。

公钥私钥原则

  • 一个公钥对应一个私钥。
  • 密钥对中,让大家都知道的是公钥,不告诉大家,只有自己知道的,是私钥。
  • 如果用其中一个密钥加密数据,则只有对应的另一个密钥才可以解密。
  • 如果用其中一个密钥可以进行解密数据,则该数据必然是对应的另一个密钥进行的加密。

两种级别验证方法

  • 基于口令的安全验证:只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人攻击”这种方式的攻击。
  • 基于密钥的安全验证:为自己创建一对密钥,并把公钥放在需要访问的服务器上。如果要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公钥,然后把它和你发送过来的公钥进行比较。如果两个密钥一致,服务器就用公钥加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私钥在本地解密再把它发送给服务器完成登录。与第一种级别相比,第二种级别不仅加密所有传输的数据,也不需要在网络上传送口令,因此安全性更高,可以有效防止中间人攻击。

使用

一般Ubuntu系统默认自动安装有ssh客户端

  • 服务端:树莓派/Nano/TX2/NX/工控机

  • 客户端:其它Ubuntu电脑/虚拟机

  • 确认是否安装:dpkg -l | grep ssh

  • 自行安装服务端:sudo apt-get install openssh-server(客户端openssh-client)

  • 查看系统是否已经安装ssh客户端或者服务端:dpkg -l | grep ssh

  • 查看是否启动:ps -e | grep ssh

  • 启动ssh服务:sudo /etc/init.d/ssh start

  • 关闭ssh服务:sudo /etc/init.d/ssh stop

  • 重启ssh服务:sudo /etc/init.d/ssh restart

登录方式有账号密码登录和公钥密钥登录

账号密码登录

  • ssh -Y 服务端用户名@服务端ip地址
  • 选择端口号:ssh -p 22 -Y 服务端用户名@服务端ip地址
  • 服务端修改端口号:/etc/ssh/sshd_config
  • 修改Port:sudo /etc/init.d/ssh restart

公钥密钥登录

  • 生成公钥密钥对:ssh-keygen -t rsa(客户端)
    · 然后根据提示按enter(其中有一个提示是要求设置私钥口令passphrase,不设置则为空),执行结束以后会在 /home/当前用户 目录下生成一个 .ssh 文件夹,其中包含私钥文件 id_rsa 和公钥文件 id_rsa.pub
  • 上传公钥到服务端:ssh-copy-id 服务端用户名@服务端ip地址
    · 将公钥复制到远程主机。ssh-copy-id会将公钥写到远程主机的 ~/ .ssh/authorized_key 文件中,以后登录这个远程主机就不用再输入密码了

别名登录

~/.ssh/config(客户端)
Host wheeltec
  HostName 192.168.0.100
  User wheeltec
  Port 22

参考资料

SSH简介及两种远程登录的方法
ssh详细登录过程
对公钥和私钥使用的理解

请添加图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46143152/article/details/124183484