在两个虚拟机之间实现免密登录,本质上是通过SSH 密钥认证替代传统的密码认证。具体步骤如下,适用于 Linux 系统(如 CentOS、Ubuntu 等):
一、准备工作
确认环境:
两台虚拟机需处于同一网络(可 ping 通),假设分别为:
本地机(发起登录的机器):hostA,IP 地址 192.168.248.133
目标机(被登录的机器):hostB,IP 地址 192.168.248.134
两台机器均已安装并启动 SSH 服务(通常默认安装,可通过 systemctl status sshd 检查)。
二、具体操作步骤
- 在本地机(hostA)生成 SSH 密钥对
SSH 密钥对包含私钥(保存在本地,需保密)和公钥(可公开,用于传输到目标机)。
在 hostA 的终端执行:
ssh-keygen -t rsa
按提示操作:
密钥保存路径:默认 ~/.ssh/id_rsa(直接回车即可)。
密码短语(passphrase):直接回车(设置为空,实现完全免密;若设置密码,每次登录需输入该密码)。
执行完成后,~/.ssh/ 目录下会生成两个文件:
id_rsa:私钥(权限需为 600,可通过 chmod 600 ~/.ssh/id_rsa 设置)。
id_rsa.pub:公钥(权限可设为 644)。
2. 将本地机公钥传输到目标机(hostB)
需将 hostA 的公钥 id_rsa.pub 复制到 hostB 的 ~/.ssh/authorized_keys 文件中(该文件用于存储允许登录的公钥列表)。
2.将本地机公钥传输到目标机上(hostB)
需将 hostA 的公钥 id_rsa.pub 复制到 hostB 的 ~/.ssh/authorized_keys 文件中(该文件用于存储允许登录的公钥列表)
3.用ssh-copy-id自动传输
ssh-copy-id username@192.168.248.134
输入hostB的登录密码后,工具会自动完成公钥复制和权限设置
在hostA的终端执行
ssh username@192.168.248.134
4.无需数据登录密码,即成功