如何配置 ssh免密登录

242 阅读2分钟

DALL·E 2023-11-30 11.45.02 - Blog banner for 'How to Configure SSH Key-Based Authentication'. Features a computer terminal with SSH commands on screen, a golden key symbolizing se.png

配置SSH免密登录通常包括生成SSH密钥对(一个公钥和一个私钥),然后将公钥添加到你希望免密登录的服务器上。以下是详细步骤:

1. 在本地机器上生成SSH密钥对

如果你还没有SSH密钥对,可以使用以下命令生成一个。默认情况下,这会在你的主目录下的.ssh文件夹中创建一个新的密钥对。

ssh-keygen -t rsa -b 4096
  • -t rsa 表示你正在生成一个RSA类型的密钥。
  • -b 4096 指定密钥的位数,4096是推荐的安全长度。

运行此命令后,系统可能会提示你输入文件保存位置和密码。如果你想要免密登录,可以直接按Enter键跳过密码设置。

2. 将公钥复制到远程服务器

你需要将生成的公钥(通常是~/.ssh/id_rsa.pub文件)添加到远程服务器上你的账户的~/.ssh/authorized_keys文件中。这可以通过ssh-copy-id命令方便地完成(在.ssh 目录执行):

ssh-copy-id 用户名@远程服务器地址

这个命令会要求你输入远程服务器的密码。输入后,你的公钥将被添加到远程服务器的authorized_keys文件中。

3. 测试免密登录

完成以上步骤后,尝试使用SSH连接到远程服务器,看是否不再需要密码:

ssh 用户名@远程服务器地址

如果一切设置正确,你应该能够不输入密码就登录到远程服务器。

注意事项

  • 确保远程服务器的~/.ssh目录和authorized_keys文件的权限设置正确。~/.ssh目录应该是700(即只有所有者有读、写、执行权限),authorized_keys文件应该是600(即只有所有者有读写权限)。
  • 如果远程服务器上没有.ssh目录或authorized_keys文件,你可能需要手动创建它们,并确保权限设置正确。
  • 在某些服务器上,SSH服务的配置可能不允许免密登录。这通常在/etc/ssh/sshd_config文件中设置。如果你有权限访问这个文件,可以检查PasswordAuthenticationRSAAuthenticationPubkeyAuthentication等选项的设置。