要让服务器支持使用密钥登录,你需要在服务器上启用 SSH 密钥认证,并在客户端配置相应的私钥。以下是详细步骤:
1. 在服务器上生成 SSH 密钥对(如果尚未生成)
如果你还没有为服务器生成 SSH 密钥对,可以使用以下命令生成:
sudo ssh-keygen
按照提示操作,你可以选择将密钥保存在默认位置(通常是 ~/.ssh/id_rsa
)并设置一个密码(可选)。
2. 将公钥复制到服务器的 ~/.ssh/authorized_keys
文件
cat ~/.ssh/id_rsa.pub | ssh root@ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
3. 确保服务器的 SSH 配置允许密钥认证
编辑服务器上的 SSH 配置文件 /etc/ssh/sshd_config
,确保以下设置:
PubkeyAuthentication yes
PasswordAuthentication yes
PermitRootLogin yes
PubkeyAuthentication yes
:启用公钥认证。PasswordAuthentication yes
:保留密码认证作为备用(可选)。PermitRootLogin yes
:允许 root 用户登录(如果需要)。
4. 重启 SSH 服务
保存 /etc/ssh/sshd_config
文件后,重启 SSH 服务以应用更改:
sudo systemctl restart sshd
sudo service ssh restart #容器场景
5. 在客户端配置 SSH 密钥
在客户端,确保你有对应的私钥文件(通常是 ~/.ssh/id_rsa
)。如果私钥文件有密码,你可能需要在每次使用时输入密码。
6. 使用密钥连接到服务器
在客户端,使用以下命令连接到服务器:
ssh -i ~/.ssh/id_rsa -p 22 root@ip
-i ~/.ssh/id_rsa
:指定私钥文件的路径。-p 22
:指定端口号为22
。root@ip
:连接到服务器的 IP 地址。
如果你使用的是 ~/.ssh/config
文件,可以添加以下配置:
Host 36.103.199.000
HostName 36.103.199.000
User root
Port 22
IdentityFile ~/.ssh/id_rsa
ForwardAgent yes
这样,你可以直接使用 ssh 36.103.199.000
连接到服务器,而无需每次都指定私钥文件和端口号。
7. 测试连接
尝试连接到服务器,验证是否可以成功使用密钥登录:
ssh 36.103.199.000
或在vscode、cursor