在两个Linux服务器之间设置SSH公钥身份验证主要包括以下几个步骤:
1. 检查SSH服务
首先,确保两台服务器都安装了SSH服务。可以使用以下命令来检查SSH服务是否正在运行:
bashsudo systemctl status ssh
如果服务没有运行,可以使用以下命令启动它:
bashsudo systemctl start ssh
2. 生成SSH密钥对
在源服务器上,使用ssh-keygen
命令生成一对新的SSH密钥(一个公钥和一个私钥)。运行:
bashssh-keygen -t rsa -b 4096
当系统提示你输入文件位置时,可以按回车键接受默认位置(通常是~/.ssh/id_rsa
)。系统还会询问你是否要设置密码短语,这是可选的。
3. 将公钥复制到目标服务器
使用ssh-copy-id
命令将公钥复制到目标服务器的~/.ssh/authorized_keys
文件中。你需要提供目标服务器的用户名和IP地址:
bashssh-copy-id username@target-server-ip
这个命令会要求你输入目标服务器的用户密码。
4. 测试SSH公钥认证
现在可以尝试使用SSH公钥认证来连接到目标服务器了。使用以下命令:
bashssh username@target-server-ip
如果一切设置正确,这时候应该不需要输入密码就能登录到目标服务器。
5. (可选)更严格的安全设置
为了增强安全性,可以编辑源服务器和目标服务器上的/etc/ssh/sshd_config
文件,确保以下设置被启用:
PasswordAuthentication no
- 禁用密码认证PermitRootLogin no
- 禁止root用户登录PubkeyAuthentication yes
- 启用公钥认证
修改后,不要忘记重启SSH服务来使改动生效:
bashsudo systemctl restart ssh
实际例子
在我之前的工作中,我们需要经常从开发服务器(DevServer)自动部署代码到生产服务器(ProdServer)。我们通过设置SSH公钥认证,使得我们的部署脚本可以无需人工干预地从DevServer安全地连接到ProdServer并执行必要的部署任务。这不仅提升了部署的效率,也增强了系统的安全性。
2024年8月14日 13:19 回复