HCRM博客

如何设置 CentOS 的 SSH 免密登录?

一、手动配置SSH免密登录

1、生成公钥和私钥:在需要进行免密登录的客户端和服务器端都执行以下命令生成SSH密钥对,以root用户为例,在终端输入:

sshkeygen t rsa

如何设置 CentOS 的 SSH 免密登录?-图1
(图片来源网络,侵权删除)

按提示操作,可直接按三次回车键接受默认设置,包括保存路径(默认为~/.ssh/id_rsa)和不设置密码短语等。

执行完成后,会在~/.ssh目录下生成id_rsa(私钥)和id_rsa.pub(公钥)两个文件。

2、拷贝公钥到远程服务器:使用sshcopyid命令将本地的公钥拷贝到远程服务器上,要将本机的公钥拷贝到IP地址为192.168.1.100的远程服务器的root用户下,执行:

sshcopyid root@192.168.1.100

系统会提示输入远程服务器用户的密码,输入正确的密码后,公钥就会被追加到远程服务器的~/.ssh/authorized_keys文件中。

如果远程服务器没有sshcopyid命令,也可以手动执行以下命令来完成相同的操作:

如何设置 CentOS 的 SSH 免密登录?-图2
(图片来源网络,侵权删除)

ssh root@192.168.1.100 "mkdir p ~/.ssh && cat >> ~/.ssh/authorized_keys" < ~/.ssh/id_rsa.pub

3、测试免密登录:在客户端尝试通过SSH登录到远程服务器,如果配置正确,应该能够无需密码直接登录。

ssh root@192.168.1.100

首次登录时可能会提示是否信任该远程主机的密钥指纹,输入yes并回车确认即可。

二、自动配置(脚本配置)SSH免密登录

1、安装Expect工具:在CentOS系统中,可以使用以下命令安装Expect工具,它用于自动化交互式任务:

yum y install expect

如何设置 CentOS 的 SSH 免密登录?-图3
(图片来源网络,侵权删除)

2、编写脚本:创建一个名为auto_ssh_setup.sh的脚本文件,内容如下:

#!/bin/bash
定义变量
USER="root"
PASSWORD="your_password"
SERVERS=("192.168.1.100" "192.168.1.101" "192.168.1.102")
生成SSH密钥对
sshkeygen t rsa N "" f ~/.ssh/id_rsa << EOF
$PASSWORD
$PASSWORD
EOF
将公钥复制到所有服务器
for SERVER in "${SERVERS[@]}"; do
    expect c "
        set timeout 1;
        spawn sshcopyid i ~/.ssh/id_rsa.pub $USER@$SERVER;
        expect {
            \"Are you sure you want to continue connecting (yes/no)?\" { send \"yes\r\"; exp_continue; }
            \"$USER@$SERVER's password:\" { send \"$PASSWORD\r\"; }
        }
    "
done

请将上述脚本中的your_password替换为实际的登录密码,SERVERS数组中的IP地址替换为实际的服务器IP地址。

3、赋予脚本执行权限并运行脚本:给脚本文件赋予可执行权限,然后运行脚本:

chmod +x auto_ssh_setup.sh

./auto_ssh_setup.sh

脚本会自动完成SSH密钥对的生成和公钥的复制,实现免密登录。

三、注意事项

1、权限问题:确保~/.ssh目录及其中的文件具有正确的权限。~/.ssh目录的权限应设置为700authorized_keys文件的权限应设置为600,否则可能会导致免密登录失败。

2、防火墙设置:检查服务器的防火墙设置,确保允许SSH连接(默认端口是22),如果防火墙阻止了SSH连接,需要开放相应的端口。

3、安全性考虑:虽然SSH免密登录可以提高便利性,但为了安全起见,建议对私钥进行加密保护,并在不需要使用时妥善保管私钥文件,避免泄露导致安全问题。

四、FAQs

1、Q:如果在执行sshcopyid命令时出现“Permission denied (publickey)”错误,该怎么办?

A:这可能是由于以下几个原因导致的:

没有正确生成或拷贝SSH密钥,请确保在客户端和服务器上都正确执行了sshkeygen命令生成密钥对,并且在拷贝公钥时没有出错。

服务器上的~/.ssh/authorized_keys文件权限不正确,请检查该文件的权限是否为600,以及~/.ssh目录的权限是否为700

可能存在网络问题或服务器配置问题,导致无法正常连接服务器,可以检查网络连接是否正常,以及服务器的SSH服务是否正常运行,配置文件是否正确等。

2、Q:如何删除已经配置好的SSH免密登录?

A:如果要删除某个服务器上的SSH免密登录,可以在该服务器上找到~/.ssh/authorized_keys文件,打开该文件并删除对应的公钥行即可,如果是要删除所有服务器上的免密登录配置,可以在客户端删除本地的私钥文件~/.ssh/id_rsa和公钥文件~/.ssh/id_rsa.pub,然后重新生成新的SSH密钥对并进行配置。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/22887.html

分享:
扫描分享到社交APP
上一篇
下一篇