在Linux系统中,SSH(Secure Shell)是一种用于远程登录和管理服务器的安全协议,通过SSH,我们可以在本地计算机上执行命令,就像直接在服务器上操作一样,为了提高安全性和便捷性,我们通常会配置SSH免密码登录,本文将详细介绍如何在Linux下配置SSH免密码登录。
准备工作
1、确保服务器已经安装了SSH服务,如果没有安装,可以使用以下命令进行安装:
对于基于Debian的系统(如Ubuntu):
```
sudo apt-get update
sudo apt-get install openssh-server
```
对于基于RPM的系统(如CentOS、Fedora):
```
sudo yum install openssh-server
```
2、生成SSH密钥对,在本地计算机上执行以下命令:
```
ssh-keygen -t rsa
```
按照提示操作,可以选择默认路径和文件名,也可以自定义,最后会生成两个文件:私钥(默认为id_rsa)和公钥(默认为id_rsa.pub)。
配置免密码登录
1、将公钥复制到服务器上的authorized_keys文件中,使用以下命令将公钥内容复制到剪贴板:
```
cat ~/.ssh/id_rsa.pub | clip
```
通过SSH登录到服务器:
```
ssh 用户名@服务器IP地址
```
输入密码后,进入服务器,接下来,创建一个新的authorized_keys文件,并将剪贴板中的公钥内容粘贴进去:
```
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
echo '粘贴剪贴板中的公钥内容' >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
```
2、修改服务器上的SSH配置文件,编辑SSH配置文件/etc/ssh/sshd_config
,找到或添加以下两行:
```
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
```
保存并退出编辑器,重启SSH服务以使更改生效:
```
sudo systemctl restart sshd
```
至此,SSH免密码登录配置完成,现在,尝试再次通过SSH登录服务器,应该不再需要输入密码。
注意事项
1、为了保证安全,建议将私钥文件设置为只读权限:
```
chmod 400 ~/.ssh/id_rsa
chmod 400 ~/.ssh/id_rsa.pub
```
2、如果需要在多个服务器上使用相同的SSH密钥对进行免密码登录,可以将公钥添加到所有服务器的authorized_keys文件中,但这样做可能会导致安全问题,因为如果一个服务器的私钥泄露,其他服务器也会受到影响,建议为每个服务器单独生成一对SSH密钥对。
3、如果需要禁用SSH免密码登录,只需删除服务器上的authorized_keys文件或注释掉PubkeyAuthentication
和AuthorizedKeysFile
这两行配置即可,然后重启SSH服务以使更改生效。
相关问题与解答
问题1:为什么在执行ssh-keygen -t rsa
时提示“无法打开设备”?
解答:这个问题通常是由于没有指定私钥文件的存储位置导致的,可以尝试指定一个路径和文件名,ssh-keygen -t rsa -f ~/my_key
,这样,私钥文件将被保存在~/my_key
目录下。
问题2:为什么在服务器上执行systemctl restart sshd
时提示“Unit sshd.service not found”?
解答:这个问题可能是由于使用的Linux发行版不同导致的,在某些发行版中,SSH服务的管理单元名称可能不是sshd.service
,请参考相应发行版的文档,找到正确的管理单元名称,然后执行相应的命令来重启SSH服务,在CentOS和Fedora中,可以使用以下命令:sudo systemctl restart sshd.service
或sudo systemctl restart openbsd-sshd.service
。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/355906.html