如果我理解您的问题,您能否设置 ssh-keys 以允许 user A 和 user B 登录到两台不同的计算机 A 和 B 不提供密码?当然可以,但是 user A 无法通过 ssh 登录到 user B 的帐户,就像 user A 可以登录到 user B 在本地计算机上的帐户。 ($HOME 等的目录所有权不同。这就是 su 的用途)。
要创建无密码登录,让我们以 用户 A 和 计算机 A 为例,他们在 计算机 B 上有一个帐户并想@ 987654324@ 并在不提供密码的情况下登录。
(1) 用户 A 在 计算机 A 上使用 ssh-keygen -t ecdsa 创建一个 public_key 和 private_key(对于ecdsa 加密密钥。由于当前 openssh 中的不安全性,不再支持 dsa 密钥)。当ssh-keygen 运行时,它将创建两个文件(默认在$HOME/.ssh 中)。密钥是id_edcsa(私钥)和id_ecdsa.pub(公钥)。
(2)用户A要在没有密码的情况下登录计算机B,他必须先转移他的public_key em> 到 计算机 B 并将其添加到 计算机 B 上的 $HOME/.ssh/authorized_keys 文件中。例如来自计算机 A:
$ ssh-keygen -t ecdsa # generate key-pair
$ cd ~/.ssh # verify private and public keys created
$ rsync -a id_ecdsa.pub hostnameB:~/.ssh/id_ecdsa.pub.hostA
password: enter pw
$ ssh hostnameB
password: enter pw
$ cd ~/.ssh
$ cat id_dsa.pub.hostA >> authorized_keys # permissions must be 0600
$ exit # exit hostnameB
注意:上面你可以rsync public_key 目录到计算机B ~/.ssh/authorized_keys 文件如果你确定一个文件不存在完全节省时间跳过上面将传输的文件复制到其中的最后一步。例如
$ rsync -a id_ecdsa.pub hostnameB:~/.ssh/authorized_keys
(之后您可能需要检查计算机 B 上的权限)
现在进行测试,用户 A 应该不再需要密码来长时间进入 计算机 B。从计算机A:
$ ssh hostnameB
$ welcome to hostnameB>
现在您只需重复为每个用户创建密钥对并将 public_key 传输到您想要访问 w/oa 密码的主机并添加 public_key 的过程到 authorized_keys 文件。 (注意:您可以将相同的 private_key 复制到每个人的 ~/.ssh 目录,并将相同的 public_key 添加到每个人的 ~/.ssh/authorized_keys 文件中,但这有点违背了有单独的键)。 注意: 每个authorized_keys 文件必须由拥有$HOME/.ssh 目录的用户所有,并且文件权限必须为0600 (-rw-------) 或sshd 将不允许连接。
仅此而已(您可以签入/etc/ssh/sshd_config 以确保authorized_keys 文件的名称未被更改为其他名称。
试一试,如果您有任何问题,请告诉我。我已经做了数百次了——只要你遵守这些规则就没有问题。