SSH 的两种认证方式

SSH(Secure Shell)提供了几种不同的认证方式,其中两种最常见的方式是密码认证和密钥认证。以下是它们的详细介绍:

  1. 密码认证

    • 原理:用户在连接时输入用户名和密码,然后将密码传输到远程服务器进行验证。如果密码验证成功,用户将被授权访问远程服务器。
    • 优点:密码认证是最简单的认证方式,用户只需记住密码即可。
    • 缺点:密码需要在网络上传输,可能受到网络嗅探和中间人攻击的威胁。密码也容易受到暴力破解攻击,尤其是对于弱密码。
  2. 密钥认证

    • 原理:用户生成一对密钥:公钥和私钥。公钥存储在服务器上的授权文件中,而私钥存储在用户的本地计算机上。当用户尝试连接到远程服务器时,远程服务器会向用户发出挑战,要求提供与公钥相对应的私钥。如果提供的私钥与服务器上存储的公钥匹配,用户将被授权访问。
    • 优点:密钥认证比密码认证更安全,因为私钥存储在用户的本地计算机上,不会发送到服务器上。这样可以避免密码在网络上传输的安全风险。
    • 缺点:密钥认证需要用户生成密钥对,并在首次连接时将公钥上传到服务器上,因此可能需要一些额外的配置步骤。如果私钥丢失或泄露,安全性可能会受到影响。

除了密码认证和密钥认证之外,还有其他一些认证方式,如使用单一登录(SSO)系统、使用基于硬件的令牌、使用多因素认证等。这些认证方式通常用于增强安全性,但不如密码认证和密钥认证那样常见和广泛使用。

SSH 配置密钥认证

SSH 默认密码认证,要配置 SSH 以使用密钥认证,需要执行以下步骤:

  1. 生成密钥对:在本地计算机上生成密钥对(公钥和私钥)。通常使用 ssh-keygen 命令来生成密钥对。

    ssh-keygen -t rsa -b 4096
    

    这将生成一个 RSA 类型的密钥对,私钥保存在 ~/.ssh/id_rsa,公钥保存在 ~/.ssh/id_rsa.pub

  2. 将公钥上传到远程服务器:将本地计算机上生成的公钥上传到远程服务器的 ~/.ssh/authorized_keys 文件中。

    如果 authorized_keys 文件不存在,你可以创建它。确保设置正确的权限,只有所有者可以读写该文件。

    cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
    

    替换 username 为你在远程服务器上的用户名,remote_host 为远程服务器的地址。

  3. 配置 SSH 服务器:确保 SSH 服务器配置允许使用密钥认证。在 SSH 服务器上打开 /etc/ssh/sshd_config 文件,并确保以下配置项启用(取消注释):

    PubkeyAuthentication yes
    

    这将启用公钥认证。

  4. 重启 SSH 服务:重启 SSH 服务以使配置生效。

    sudo systemctl restart ssh
    

完成上述步骤后,你应该可以使用密钥进行 SSH 认证了。连接到远程服务器时,SSH 客户端会自动尝试使用私钥进行认证,如果私钥与远程服务器上的公钥匹配,连接将成功建立。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值