在 Ubuntu 上配置 SSH 公钥认证的步骤如下:
1. 生成 SSH 密钥对
如果你还没有 SSH 密钥对,可以使用以下命令生成:(win可以用git的终端)
ssh-keygen -t rsa -b 4096
- 按提示选择保存位置(默认是
~/.ssh/id_rsa
,win在C:\Users\你的用户名\.ssh
)。 - 可以选择设置一个密码,增加安全性。
- -t rsa
- 这个选项指定了密钥的类型。rsa 表示使用 RSA 算法生成密钥。RSA 是一种广泛使用的公钥加密算法,适用于安全通信。
- -b 4096
- 这个选项指定了密钥的位数(长度)。4096 表示生成一个 4096 位长的密钥。这是一个较长的密钥长度,通常被认为是安全的,能够抵御现代计算能力的攻击。
2. 将公钥复制到目标服务器
使用 ssh-copy-id
命令将公钥复制到目标服务器:
ssh-copy-id username@hostname
- 将
username
替换为你的用户名,hostname
替换为目标服务器的 IP 地址或域名。 - 输入目标服务器的密码。
- 或者直接上传文件
id_rsa.pub
后写入/ubuntu用户名/.ssh/authorized_keys
文件
3. 手动复制公钥(可选)
如果你无法使用 ssh-copy-id
,可以手动复制公钥:
-
查看公钥内容:
cat ~/.ssh/id_rsa.pub
-
登录到目标服务器:
ssh username@hostname
-
在目标服务器上,打开
~/.ssh/authorized_keys
文件(如果没有则创建):nano ~/.ssh/authorized_keys
-
将本地公钥的内容粘贴到
authorized_keys
文件中,保存并退出。
4. 设置权限
确保 ~/.ssh
目录和 authorized_keys
文件的权限正确:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
5. 测试 SSH 登录
现在你可以尝试使用 SSH 登录到目标服务器,看看是否可以不输入密码:
ssh username@hostname
6. 配置 SSH 服务(可选)
如果需要,可以编辑 SSH 配置文件 /etc/ssh/sshd_config
,确保以下设置:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
然后重启 SSH 服务:
sudo systemctl restart ssh
总结
通过以上步骤,你应该能够成功配置 SSH 公钥认证,然后就可以在xshell中使用私钥登录了。