一、要实现SSH免密登录Linux,你需要做以下几步
-
在用户侧生成SSH密钥对(如果已有密钥,可以跳过这一步)。
-
将公钥复制到远程Linux服务器上的
~/.ssh/authorized_keys
文件中。 -
确保远程Linux服务器的SSH配置允许密钥认证。
二、代码安排
- 在用户侧生成SSH密钥对(将
~/.ssh/id_rsa
作为密钥文件路径):ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa
- 在用户侧将公钥复制到远程服务器:
ssh-copy-id user@remote_host
其中
user
是远程服务器上的用户名,remote_host
是远程服务器的地址。 - 登录远程服务器,确认
~/.ssh/authorized_keys
文件中包含你的公钥。
完成这些步骤后,你就能够无密码通过SSH登录到Linux服务器。
三、ssh 密钥登录原理
SSH 秘钥登录的原理涉及两个密钥:一个是公钥,另一个是私钥。私钥必须安全保管,而公钥可以发送给远程服务器。登录流程如下:
-
用户生成一对密钥(公钥和私钥)。
-
用户将公钥复制到远程服务器的
~/.ssh/authorized_keys
文件中。 -
用户尝试通过SSH登录远程服务器。
-
远程服务器接收用户的登录请求,检查
authorized_keys
文件中是否有匹配的公钥。 -
如果找到匹配公钥,服务器会随机生成一个字符串,并用匹配到的公钥加密。
-
服务器发送加密后的字符串给用户。
-
用户收到加密字符串后,用自己的私钥解密。
-
用户将解密后的字符串发送回服务器。
-
服务器验证解密后的字符串与原始字符串是否一致,成功则允许登录。