浅析 SSH 免密登录原理

SSH(Secure Shell)是一种网络协议,可以在不安全的网络中提供一种安全的加密通信方式。SSH 免密登录是指用户在登录远程主机时,无需输入密码即可完成登录,免去每次登录时输入密码的烦恼。这种方式既提高了用户的操作便捷性,又避免了使用简单密码的风险,极大地提高了登录的安全性。本文旨在以简单易懂的方式解释SSH免密登录的原理。 SSH免密登录原理非对称加密在了解SSH免密登录原理之前,我们需要先了解“非对称加密”。SSH 免密登录原理是基于非对称加密技术。 非对称加密就是指加密数据和解密数据用的是不同密钥,密钥分为加密密钥和解密密钥,将这样的两个密钥称为密钥对。 用户用加密密钥加密的数据只能用解密密钥才能解密,而且两个密钥相对独立,知道了其中的一个密钥,并不能计算出另一个密钥。因此我们可以公开其中的一个密钥,保密另一个密钥。公开的密钥称为公钥,不公开的密钥称为密钥。在 SSH 协议中加密密钥为公钥,解密密钥为私钥,这也被称为“公钥加密技术”。 因此,私钥应该妥善保管,防止泄露。如果私钥安全,那么 SSH 免密登录将是一种非常安全的登录方式。 除了提高操作便捷性和登录安全性之外,SSH 免密登录还可以减少用户输入密码的次数。这对于需要频繁登录远程主机的用户来说尤为重要。此外,SSH 免密登录还可以实现自动化脚本的编写和远程服务器的管理,从而提高工作效率。 总之,了解 SSH 免密登录的原理可以帮助用户更好地使用该功能,保证登录的安全性和便捷性。同时,用户在使用 SSH 免密登录时,也应该注意保护自己的私钥,避免私钥泄露,以确保登录的安全性。 不难猜到,与非对称加密相反的对称加密指的就是加密与解密用的是同一个密钥。此种加密方法安全性低。 免密登录流程 SSH免密登录原理基于公钥加密技术,具体步骤如下: 用户在本地生成id_rsa.pub公钥和id_rsa私钥; 命令:ssh-keygen 并且私钥只用于解密数据,公钥只用于加密数据。私钥只保存在本地,公钥复制一份到远程服务器上; 命令:ssh-copy-id 当用户通过SSH协议连接远程服务器时,会发送包含username的数据用于请求连接,服务器在接下来的操作中会使用与username相对应的公钥; 命令:ssh username@remote_host 服务器会生成一个随机数,称之为 Challenge,并将 Challenge 使用公钥加密后发送给用户; 用户使用私钥对 Challenge 进行解密; 再将解密后的数据再用 MD5 加密一遍发送回服务器; 服务器会对比原始 Chanllenge 的 MD5 值和用户发送过来的 MD5值,若一致则允许用户登录,否则拒绝登录。 使用方法 首先在本地生成一对公私钥,可以使用以下命令: ssh-keygen -t rsa 这个命令会在用户目录~下生成一个 .ssh 文件夹,里面包含私钥和公钥。 将公钥上传到远程服务器,可以使用以下命令: ssh-copy-id username@remote_host 其中,username为远程服务器的用户名,remote_host为远程服务器的IP地址或域名。 登录远程服务器时,可以使用以下命令: ssh username@remote_host 写在最后除了提高操作便捷性和登录安全性之外,SSH 免密登录还可以减少用户输入密码的次数。这对于需要频繁登录远程主机的用户来说尤为重要。此外,SSH 免密登录还可以实现自动化脚本(例如GitHub Actions)的编写和远程服务器的管理,从而提高工作效率。 ...

2023年03月28日 · 1 分钟 · Cassius0924

Git 免密登录配置指南

是谁还不会Git SSH免密配置?哦,是你🤪 这是一个简单教程,旨在帮助大家实现免密SSH登录,省去每次输入用户名和密码的烦恼。(是真的烦呐!) 本教程旨在帮助初学者了解Git免密登录的配置方法,以及介绍HTTPS和SSH协议之间的区别。同时提供具体操作步骤。 HTTPS和SSH的区别Git支持两种协议:HTTPS和SSH。两种协议各有优缺点: HTTPS协议:使用简单,不需要配置SSH密钥,但相对较慢,且不支持Push操作。 SSH协议:速度快,支持Push操作,但需要配置SSH密钥。 2021年8月13日起,Github不再支持密码身份验证。“Support for password authentication was removed on August 13, 2021.“ 因此,如果只是从远程仓库拉取代码,建议使用HTTPS协议;如果需要Push代码到远程仓库,则需要配置SSH密钥,使用SSH协议。 SSH免密登录配置步骤 由于SSH协议更安全和优雅且支持Push操作,因此推荐大家使用SSH免密登录,以下是配置教程。 前提先确保你添加远程 Git 远程仓库时使用的是SSH链接,即git remote add时应该使用远程仓库的SSH链接。检查方法: git remote -v 若显示git@github.com:...即为SSH链接,若显示https://...则为HTTPS链接,使用一下命令进行修改: git remote set-url <repo_name> <ssh_url> 当然,也可以用git remote rm命令先删除远程仓库,再用git remote add重新添加。 步骤 打开终端,输入以下命令生成SSH密钥: ssh-keygen -t rsa -C "your_email@example.com" 别直接粘贴上去啊喂!改改后面的邮箱。 按照提示输入密钥保存路径和密码,建议直接回车使用默认值: Generating public/private rsa key pair. Enter file in which to save the key (~/.ssh/id_rsa): Enter passphrase (empty for no passphrase): 也别设置密码啊,不然Push时又要输入你设定的密码,那就不叫免密啦…… ...

2023年03月24日 · 1 分钟 · Cassius0924