gpt4 book ai didi

linux - 如何在两个不同帐户之间设置无密码身份验证

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:36 30 4
gpt4 key购买 nike

我们可以在两台机器的两个不同用途之间设置无密码身份验证吗?

例如:计算机 A 有用户 A,计算机 B 有用户 B。我们可以设置密码 ssh 以便计算机 A 上的用户 A 使用其用户帐户(A)登录计算机 B。

谢谢!!

最佳答案

如果我理解您的问题,您能否设置 ssh-keys 以允许用户 A用户 B 在不提供密码的情况下登录到两台不同的计算机 A 和 B?当然可以,但是用户 A 无法通过 ssh 登录用户 B 的帐户,就像用户 A 无法在本地计算机上登录用户 B 的帐户一样。 ($HOME 的目录所有权不同,等等。这就是 su 的用途)。

要创建无密码登录,我们以用户 A计算机 A 为例,他们在计算机 B 上拥有帐户,并且想要ssh 主机名B 并在不提供密码的情况下登录。

(1) 用户 A 使用 ssh-keygen -t ecdsa计算机 A 上创建public_keyprivate_key(用于 ecdsa 加密 key 。由于当前 openssh 的不安全性,不再支持 dsa key )。当ssh-keygen运行时,它将创建两个文件(默认在$HOME/.ssh中)。 key 是 id_edcsa(私钥)和 id_ecdsa.pub(公钥)。

(2)用户 A 无需密码即可登录计算机 B,他必须首先将其公钥传输到计算机 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

注意:如果您确定上述文件不存在,您可以将 public_key 目录rsync计算机 B~/.ssh/authorized_keys 文件中,以节省时间,完全跳过将传输的文件复制到上面的最后一步。例如

$ rsync -a id_ecdsa.pub hostnameB:~/.ssh/authorized_keys

(之后您可能需要检查计算机 B 上的权限)

现在进行测试,用户 A 应该不再需要密码来长时间访问计算机 B。来自计算机 A:

$ ssh hostnameB
$ welcome to hostnameB>

现在,您只需重复为每个用户创建 key 对的过程,并将public_key传输到您想要无需密码即可访问的主机,并将public_key添加到authorized_keys文件中。 (注意:您可以将相同的private_key复制到每个人的~/.ssh目录中,并将相同的public_key添加到每个人的~/.ssh/authorized_keys文件中,但这违背了拥有单独 key 的目的)。 注意:每个 authorized_keys 文件必须由拥有 $HOME/.ssh 目录的用户所有,并且文件权限必须为 0600 (-rw-----),否则 sshd 将不允许连接。

这就是全部内容(您可以检查 /etc/ssh/sshd_config 以确保 authorized_keys 文件的名称没有更改为其他名称。

尝试一下,如果您有疑问,请告诉我。我已经这样做了数百次 - 只要您遵守这些规则就没有问题。

关于linux - 如何在两个不同帐户之间设置无密码身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36171227/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com