一、生成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免密码登录到该服务器上了。