如何在两个不同帐户之间设置无密码身份验证
Posted
技术标签:
【中文标题】如何在两个不同帐户之间设置无密码身份验证【英文标题】:How to setup the passwords-less authentication between two different accounts 【发布时间】:2016-07-10 08:01:06 【问题描述】:我们能否在两台机器的两种不同用途之间设置无密码身份验证。
例如:计算机 A 有用户 A,计算机 B 有用户 B。 我们可以设置用户 A 从计算机 A 使用他的用户帐户 (A) 登录计算机 B 的密码 ssh。
谢谢!!
【问题讨论】:
谷歌搜索您的问题如何设置两个不同帐户之间的无密码身份验证 我找到了一百个很棒的教程。为什么您更喜欢询问并等待答案而不是做最少的研究? 【参考方案1】:如果我理解您的问题,您能否设置 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
文件的名称未被更改为其他名称。
试一试,如果您有任何问题,请告诉我。我已经做了数百次了——只要你遵守这些规则就没有问题。
【讨论】:
很高兴它有帮助,一旦你完成了一两次它就非常简单,但是第一次弄清楚它可能很困难(特别是考虑到网络上写得不好的例子的数量)以上是关于如何在两个不同帐户之间设置无密码身份验证的主要内容,如果未能解决你的问题,请参考以下文章
如果用户已经无密码登录,firebase 可以设置密码身份验证吗?