Ubuntu设置 SSH通过密钥登录

发布于 2023-01-02  62 次阅读


密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。

RSA 是以发明者 Ron Rivest、Adi Shamir、Leonard Adleman 名字的首字母命名的一种非对称加密算法。在公钥密码系统中,加密密钥与解密密钥不同,由加密密钥推导出解密密钥在计算上是不可行的,系统的加密算法和加密密钥可以公开,只要保存好解密密钥即可。而 RSA 则是基于整数因子分解问题的,对极大数做因数分解的难度决定了 RSA 算法的可靠性。

我们需要先生成一对公钥和私钥。

ssh-keygen #建立密钥对
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #按Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): #按Enter
Enter same passphrase again: #按Enter
Your identification has been saved in /root/.ssh/id_rsa #私钥路径
Your public key has been saved in /root/.ssh/id_rsa.pub #公钥路径

下载 id_rsa 和 id_rsa.pub 到你的电脑上,并妥善保管。

接着在服务器上安装公钥。

cd .ssh
cat id_rsa.pub >> authorized_keys #复制到authorized_keys

为了确保连接成功,请保证以下文件权限正确。可跳过此步。

cd .ssh
chmod 600 authorized_keys
chmod 700 ~/.ssh

在 sshd_config 里打开密钥登录功能。

vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
PermitRootLogin yes #允许 root 通过 SSH 登录

当你以密钥方式登录成功后,再禁用密码登录。

vi /etc/ssh/sshd_config
PasswordAuthentication no

最后重启 SSH 服务。

service sshd restart