您的位置:

如何实现SSH免密码登录

一、生成SSH密钥

SSH免密码登录需要使用公钥和私钥进行身份验证,因此首先需要生成SSH密钥。

在Linux或macOS系统中,使用命令行进入终端,输入以下命令:

ssh-keygen -t rsa

根据提示输入文件名和密码(如果不需要密码则直接回车),密钥文件默认会生成在用户目录下的.ssh文件夹中。

二、将公钥添加到目标服务器

生成SSH密钥后,需要将公钥添加到目标服务器上,以便身份验证。

在本地终端中执行以下命令,将公钥添加到目标服务器中:

ssh-copy-id username@remote_host

其中,username是目标服务器的用户名,remote_host是目标服务器的IP地址或主机名。执行该命令后,会提示输入目标服务器的密码。

三、配置SSH配置文件

为了方便使用SSH免密码登录,可以在本地主机上配置SSH配置文件,使其自动读取密钥。

在本地主机中找到.ssh文件夹,如果不存在就自行新建,编辑或创建config文件,添加以下内容:

Host remote_host
    HostName remote_host
    User username
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa

其中,remote_host和username分别为目标服务器的IP地址或主机名和用户名,IdentityFile指定了私钥文件的位置。如果私钥文件名不是id_rsa,则需要将该文件名替换成实际的密钥文件名。

四、测试SSH免密码登录

完成上述步骤后,使用SSH命令测试是否能够免密码登录到目标服务器上。

在本地终端中输入以下命令:

ssh username@remote_host

如果一切正常,会直接登录到目标服务器上,无需输入密码。

五、禁用密码登录(可选)

为了加强服务器的安全性,可以禁用密码登录,只允许使用SSH免密码登录。

在目标服务器上,找到ssh配置文件,一般位于/etc/ssh/sshd_config,编辑该文件,将以下两行的注释去掉:

PasswordAuthentication no
ChallengeResponseAuthentication no

然后重启ssh服务,输入以下命令:

sudo service sshd restart

重启后,只能使用SSH免密码登录到该服务器上了。