如何批准特定计算机通过 ssh 连接到禁用密码身份验证的计算机?

Dar*_*zer 4 ssh authentication password

help.ubuntu.com/community/SSH/OpenSSH/Configuring 中的说明建议禁用密码身份验证,以便“只能从您特别批准的计算机进行连接”。但他们没有说明如何专门批准一台计算机。我怎么做?

Aze*_*ale 8

在您想要访问服务器的每个用户上,在终端中运行:

ssh-keygen
ssh-copy-id <username>@<serverIPorDNSname>
Run Code Online (Sandbox Code Playgroud)

它会问你在哪里保存它,默认就可以了。它会要求您输入密码。这是为了加密密钥,以防计算机被盗或遭到破坏。如果您不需要密码,则将两个密码提示都留空。

第一个命令为当前运行它的用户创建一个 ssh 密钥。第二个命令 ssh 进入服务器并将当前用户的密钥添加到服务器的允许登录的列表中。由于 ssh-copy-id 使用的是 ssh,因此您需要在禁用密码登录之前执行此操作。

SSH 密钥是两个匹配的一半。一半告诉所有人,另一半保密。使用数学算法,可以使用公共部分来解密用私钥加密的数据。如果使用公钥成功解密数据,您无疑会知道加密它的是密钥的私有部分。因此,当您使用 ssh 密钥登录时,客户端会发送一条消息(使用私钥加密),基本上说“让我进入”。服务器使用公钥进行检查,如果公钥在允许的计算机列表中,则登录成功。

ssh-copy-id 是(使用 ssh)将公共部分复制到允许登录的密钥的服务器列表(该列表存储在 /home/<username>/.ssh/authorized_keys2,或者在 root 的情况下在/root/.ssh/authorized_keys2)。如果您已经禁用密码验证,您仍然可以添加计算机。您只需将公钥(在客户端计算机上的 /home/username/.ssh/id_rsa.pub)复制到 U 盘之类的东西,然后将 id_rsa.pub 的内容添加到 /home/<服务器上的 username>/.ssh/authorized_keys2 文件。(您可以通过cat /media/USB/stick/path/to/id_rsa.pub >>/home/<username>/.ssh/authorized_keys2在服务器上运行命令来完成此操作。)