要使用密钥登录SSH,您需要按照以下步骤设置公钥认证:
1. 生成SSH密钥对
首先,在本地计算机上生成一个SSH密钥对(公钥和私钥)。可以通过以下命令来生成:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
- -t rsa:指定使用RSA算法生成密钥。
- -b 4096:指定密钥长度为4096位。
- -C “[email protected]”:为密钥添加一个注释(通常是您的邮箱地址)。
按照提示操作,选择密钥保存路径(默认是~/.ssh/id_rsa
)和可选的密码保护。
2. 将公钥复制到远程服务器
生成密钥对后,您需要将公钥复制到远程服务器的~/.ssh/authorized_keys
文件中。您可以手动将公钥复制到服务器,或者使用ssh-copy-id工具。
使用ssh-copy-id工具的命令如下:
ssh-copy-id username@remote_host
此命令会将您的公钥添加到远程服务器的~/.ssh/authorized_keys
文件中。
3. 配置SSH服务器
确保远程服务器的SSH配置允许公钥认证。编辑远程服务器上的/etc/ssh/sshd_config
文件,检查以下设置:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
然后重新启动SSH服务:
sudo systemctl restart sshd
4. 使用密钥登录
现在,您可以通过SSH使用密钥登录到远程服务器,命令如下:
ssh -i ~/.ssh/id_rsa username@remote_host
如果您的私钥文件不是默认的id_rsa,需要通过-i选项指定私钥文件的路径。
5. (可选)禁用密码认证
如果您希望只使用密钥登录,并禁用密码认证,可以在/etc/ssh/sshd_config
中进行以下配置:
PasswordAuthentication no
然后再次重启SSH服务:
sudo systemctl restart sshd
这样,您的SSH服务器将只允许通过密钥进行认证,禁止密码登录。