当我们使用SSH协议进行远程登录时,通常需要输入密码才能成功登录,这不仅繁琐而且容易泄露密码。本文将介绍如何通过配置实现Linux系统的免密钥登录,避免了密码登录的弊端。
准备工作
在开始实现免密钥登录之前,需要确保以下条件已满足:
- 两台Linux主机之间可以互相ping通
- 两台主机安装了openssh-server和openssh-clients软件包
实现步骤
下面将针对Ubuntu 18.04 LTS操作系统,逐步介绍如何完成免密钥登录的配置。
1. 生成公钥和私钥
使用以下命令在本地主机生成公钥和私钥。
$ ssh-keygen -t rsa
该命令会在~/.ssh/目录下生成id_rsa和id_rsa.pub两个文件,其中id_rsa为私钥,id_rsa.pub为公钥。
2. 复制公钥到远程主机
使用以下命令将本地主机的公钥复制到远程主机。
$ ssh-copy-id user@remote-host
其中user为远程主机的用户名,remote-host为远程主机的IP地址或主机名。
如果提示“Permission denied (publickey)”错误,可以尝试手动复制公钥。
3. 验证免密钥登录
使用以下命令验证是否已实现免密钥登录。
$ ssh user@remote-host
如果成功登录到远程主机而不需要输入密码,则免密钥登录已经成功。
示例说明
示例1:免密钥登录Ubuntu服务器
假设我们有两台Ubuntu 18.04 LTS服务器,它们的IP地址分别为192.168.1.100和192.168.1.101。现在我们需要在192.168.1.100服务器上实现免密钥登录到192.168.1.101服务器。
在192.168.1.100服务器上执行以下命令生成公钥和私钥。
$ ssh-keygen -t rsa
使用以下命令将公钥复制到192.168.1.101服务器。
$ ssh-copy-id user@192.168.1.101
然后使用以下命令验证是否已实现免密钥登录。
$ ssh user@192.168.1.101
如果成功登录到192.168.1.101服务器而不需要输入密码,则免密钥登录已经成功。
示例2:免密钥登录CentOS服务器
假设我们有两台CentOS 7服务器,它们的IP地址分别为10.0.0.100和10.0.0.101。现在我们需要在10.0.0.100服务器上实现免密钥登录到10.0.0.101服务器。
在10.0.0.100服务器上执行以下命令生成公钥和私钥。
$ ssh-keygen -t rsa
使用以下命令将公钥复制到10.0.0.101服务器。
$ ssh-copy-id user@10.0.0.101
然后使用以下命令验证是否已实现免密钥登录。
$ ssh user@10.0.0.101
如果成功登录到10.0.0.101服务器而不需要输入密码,则免密钥登录已经成功。
总结
通过配置免密钥登录,我们可以在保证安全性的前提下,方便地登录到远程主机。本文介绍了基于SSH协议的免密钥登录实现步骤,并且通过两个示例说明了该过程。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux配置实现免密钥登录过程解析 - Python技术站