Linux中设置SSH密钥认证步骤详解

需积分: 0 0 下载量 179 浏览量 更新于2024-08-05 收藏 1.53MB PDF 举报
"本文主要介绍了如何在Linux系统中配置基于密钥认证的SSH,以提高安全性,减少对密码的依赖。教程中以ArchLinux作为本地系统,Ubuntu 18.04 LTS作为远程系统进行演示。" 在Linux环境中,SSH(Secure Shell)是一种广泛使用的加密网络协议,用于在不安全的网络上实现安全的远程访问和通信。SSH提供多种认证方式,包括基于密码的认证和基于密钥的认证。基于密码的认证需要用户输入远程系统的用户密码,而基于密钥的认证则更安全,因为它依赖于一对密钥——私钥和公钥。私钥应妥善保存在本地系统,公钥则需上传至远程系统。 配置基于密钥认证的SSH步骤如下: 1. **生成SSH密钥对**:在本地系统(如ArchLinux)上,使用`ssh-keygen`命令生成SSH密钥对。通常,这个命令会创建一个默认存储在`~/.ssh`目录下的id_rsa(私钥)和id_rsa.pub(公钥)文件。 ``` ssh-keygen -t rsa -b 4096 ``` 2. **查看公钥内容**:使用`cat`命令查看公钥内容,以便稍后将其添加到远程系统的授权密钥文件中。 ``` cat ~/.ssh/id_rsa.pub ``` 3. **复制公钥到远程系统**:可以使用`ssh-copy-id`命令将公钥复制到远程系统(如Ubuntu 18.04 LTS)的`~/.ssh/authorized_keys`文件中。 ``` ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-system-ip ``` 4. **配置远程系统**:确保远程系统上的SSH服务已经启动并允许公钥认证。检查`/etc/ssh/sshd_config`文件,确保以下设置正确: ``` PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys ``` 5. **重启SSH服务**:在远程系统上重启SSH服务,使配置生效。 ``` sudo systemctl restart sshd ``` 6. **测试连接**:现在,你应该能够使用SSH基于密钥的身份验证来连接到远程系统,而无需输入密码。 ``` ssh user@remote-system-ip ``` 注意,使用基于密钥的认证可以增强系统的安全性,但也要确保私钥的安全,避免私钥泄露给他人。此外,定期更换密钥也是维护安全的好习惯。 通过以上步骤,你已经在Linux中成功配置了基于密钥认证的SSH连接。这种方式不仅可以提高安全性,还可以减少因频繁输入密码带来的不便。如果你需要管理多个远程服务器,这种方法尤其适用,可以大大提高工作效率。