生成 ssh 的身份验证密钥

生成 ssh 的身份验证密钥

(1)我在计算机 A 上使用以下命令生成从计算机 A 到计算机 B 的 ssh 的身份验证密钥

ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub B:.ssh/authorized_keys2

(a) 如果进一步生成从计算机 A 到计算机 C 的 ssh 身份验证密钥,您将如何操作?对 A 到 B 使用相同的 ~/.ssh/id_rsa.pub 是不是一个好方法?

scp ~/.ssh/id_rsa.pub C:.ssh/authorized_keys2

(b) 如果进一步生成从计算机 B 到计算机 D 的 ssh 的身份验证密钥,在 B 上重复 A 到 B 的命令是否正确?

ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub D:.ssh/authorized_keys2

(2)A到B好像还有另外一种方法:

ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub B

(2) 和 (1) 有什么区别?如果在 (1) 的情况 (a) 和 (b) 中使用 (2) 的命令,尤其是 (b),你会怎么做?

感谢致敬!

答案1

我使用方法 1,将我的公钥复制到我想要访问的所有服务器(使用该密钥)。公钥无法识别它可能分发到的其他地方,如果您开始对要访问的多个主机使用多个密钥,那么您将为自己带来管理上的噩梦。

只需确保您的私钥保持私密并使用密码保护即可。

答案2

如果您有权使用“ssh-copy-id”命令,这是一个从源主机初始设置 SSH 身份验证的好方法。ssh-copy-id 脚本只需获取您的公钥,将其复制到远程主机的文件 ~/.ssh/authorized_keys 中。它还确保目录 ~/.ssh 存在,并将模式设置为 700(go-rwx)。

如果您要像上面描述的那样在多台机器之间设置一个简单的 SSH 身份验证链,您实际上可以对所有机器使用相同的密钥。一个简单的方法如下:

生成 1024 位 DSA 密钥(也可以是 RSA,但需要 2048 位或更高)

A ~# ssh-keygen -t dsa

将公钥分发给其他 3 台主机。此时,您将看到 user@B、user@C 和 user@D 可以正常登录

A ~# ssh-copy-id -i .ssh/id_dsa.pub user@B
A ~# ssh-copy-id -i .ssh/id_dsa.pub user@C
A ~# ssh-copy-id -i .ssh/id_dsa.pub user@D

复制 ID 后,您可以将私钥 (!) 分发给其他主机。这实际上使您能够直接从 B 登录到主机 A,或从 D 登录到 C 等,因为它们都共享相同的密钥,并且都具有相同的 authorized_keys。

A ~# scp -p .ssh/id_dsa user@B:~/.ssh/
A ~# scp -p .ssh/id_dsa user@C:~/.ssh/
A ~# scp -p .ssh/id_dsa user@D:~/.ssh/

最后的任务是重命名主机 A 上的公钥,以便主机 A 也具有 authorized_keys 并可以允许从主机 B、C 和 D 登录。

A ~# mv .ssh/id_dsa.pub .ssh/authorized_keys

现在,您应该能够使用相同的密钥在所有 4 台主机之间移动或复制数据,从而绕过登录用户密码质询。这取决于您是否生成了没有密码的密钥,也就是说...

相关内容