Arun,为了让公钥/私钥授权在 Linux 上工作,需要遵守一些关于密钥的手续。主要是服务器 A 上的权限和包含来自服务器 B 的公钥的文件。
首先在服务器 B 上,生成您的公钥和私钥,例如ssh-keygen -t rsa。这将创建具有默认长度(通常为2048 字节)的~/.ssh/id_rsa(您的私钥)和~/.ssh/id_rsa.pub(您的公钥)。您的私钥的权限必须是0600(例如-rw-------)
(注意:,如果需要,您可以选择生成ecdsa 类型的密钥,但不要使用dsa,因为dsa 密钥的使用已被弃用,它们的用途是在当前版本的openssh 上通常默认禁用)
为了在没有密码的情况下登录服务器 A,您的公钥必须复制到服务器 A 并且它必须附加到(如果它是第一个密钥,则复制到)~/.ssh/authorized_keys 文件在服务器 A 上。服务器 A 上 ~/.ssh 的目录权限必须是 0700(例如drwx------)
(注意:其他文件权限可以是0644)
从服务器 B 完成这一切的最简单方法是,在生成您的密钥后,将您的公共密钥 scp(或 rsync)提供给服务器 A,如果您没有其他密钥,则直接作为 ~/.ssh/authorized_keys服务器 A 上的密钥,或通过将您的公钥复制到服务器 A 并使用 cat 和重定向(附加,而不是截断/替换,模式)将您的公钥添加到现有的 ~/.ssh/authorized_keys 文件中,例如
如果您在服务器 A 上没有其他公钥
scp ~/.ssh/id_rsa.pub Server_A:~/.ssh/authorized_keys
如果您要添加到服务器 A 上的现有 ~/.ssh/authorized_keys
scp ~/.ssh/id_rsa.pub Server_A:~/.ssh/id_rsa.pub.B
ssh Server_A "cat ~/.ssh/id_rsa.pub.B >> ~/.ssh/authorized_keys"
(注意:".B" 在复制到服务器 A 时被附加到公钥名称中以防止覆盖服务器 A 上任何现有的 id_rsa.pub。您可以现在删除服务器 A 上的 ~/.ssh/id_pub.rsa.B -- 它现在在 ~/.ssh/authorized_keys`)
就是这样。现在来自服务器 B 的ssh Server_A 应该可以在没有密码的情况下工作。 (所有依赖于ssh 的东西在服务器 B 和 A 之间也可以在没有密码的情况下工作,例如 scp、rsync 等...)如果您有任何问题,请使用 ssh -vv Server_A 获取调试输出位置验证失败。