SSH(Secure Shell)的身份验证机制

一.密码认证

1.用户发起SSH连接:

用户在本地计算机上打开终端,并输入SSH命令:

ssh 用户名@主机地址

2.服务器请求密码:

服务器收到连接请求后,会提示用户输入密码。

3.用户输入密码:

密码不回显,不会显示在终端。

4.验证密码:

服务器使用用户输入的密码来验证用户的身份。如果密码正确,用户将成功登录。

5.成功登录:

如果密码验证成功,用户会看到远程系统的提示符。

二.密钥认证

它使用公钥加密技术来验证用户的身份。相比于密码认证,密钥认证更加安全且方便,因为它不需要用户每次登录时都输入密码。

1.生成密钥对:

在本地计算机上使用 ssh-keygen 命令生成一对公钥和私钥:

ssh-kengen
  • 默认情况下,私钥文件名为 ~/.ssh/id_rsa,公钥文件名为~/.ssh/id_rsa.pub。
  • 生成密钥对时,您还可以设置一个密码短语(passphrase)来进一步保护私钥的安全性。

1.用户发起SSH连接:

 用户在本地计算机上打开终端,并输入SSH命令:

ssh 用户名@主机地址

2.服务器请求公钥:

服务器收到连接请求后,会检查用户的公钥是否存在于其授权的列表中。

3.用户提供公钥:

如果服务器中已经有了用户的公钥,那么用户就不需要做任何额外的操作。

如果服务器中没有用户的公钥,用户需要使用 ssh-copy-id 命令将公钥添加到远程服务器的 authorized_keys 文件中:

ssh-copy-id 用户名@主机地址

ssh-copy-id 命令简化了将公钥添加到远程服务器上的过程。

4.服务器验证公钥:

  • 当用户发起连接时,服务器会向用户发送一条消息,要求用户用自己的私钥签名这条消息。
  • 用户的SSH客户端使用私钥对消息进行签名,并将签名后的消息发送回服务器。
  • 服务器使用用户的公钥来验证签名是否正确。

​5.成功登录:

如果签名验证成功,用户将成功登录到远程系统。

密钥认证的工作原理

1.非对称加密:

  • 密钥认证利用了非对称加密的原理,即每个用户都有一对密钥:公钥和私钥。
  • 公钥可以公开,而私钥必须保密。

2.公钥验证:

  • 当用户尝试通过SSH登录时,服务器会发送一条消息给用户,要求用户用自己的私钥对该消息进行签名。
  • 签名过程是通过私钥完成的,而验证签名的过程是通过公钥完成的。
  • 由于只有拥有私钥的人才能正确签名,服务器可以通过验证签名来确认用户的身份。

3.安全性:

  • 密钥认证的安全性基于这样一个事实:私钥是保密的,而公钥是公开的。
  • 如果私钥泄露,任何人都可以冒充用户,因此私钥必须妥善保管。

注意事项

1.私钥保护:

  • 私钥应妥善保管,不应泄露给其他人。
  • 如果私钥丢失或被泄露,应立即更换密钥对。
  • 可以为私钥设置密码(称为passphrase),以增加安全性。

2.公钥分发:

  • 用户需要将公钥发送到每个需要访问的远程服务器上。
  • 可以手动分发公钥,也可以使用自动化脚本或工具来分发。

3.配置SSH服务:

  • 在远程服务器上,需要配置SSH服务以支持密钥认证。
  • 通常需要编辑  /etc/ssh/sshd_config  文件,并确保允许公钥认证:
PubkeyAuthentication yes
  • 如果需要禁用密码认证以提高安全性,可以设置: 
PasswordAuthentication no

总结

SSH提供了多种身份验证方法,其中密码认证是最简单的方式,但密钥认证更为安全,多因素认证则提供了最高的安全性。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值