我们可以在两台机器的两种不同用途之间设置无密码身份验证吗?
例如:计算机 A 有用户 A,计算机 B 有用户 B。我们可以设置用户 A 从计算机 A 使用他的用户帐户(A)登录计算机 B 的密码 ssh。
谢谢!!
我们可以在两台机器的两种不同用途之间设置无密码身份验证吗?
例如:计算机 A 有用户 A,计算机 B 有用户 B。我们可以设置用户 A 从计算机 A 使用他的用户帐户(A)登录计算机 B 的密码 ssh。
谢谢!!
如果我理解您的问题,您是否可以设置ssh-keys
允许用户 A和用户 B在不提供密码的情况下登录到两台不同的计算机A 和 B ?当然,但是用户 A不能通过 ssh登录到用户 B的帐户,就像用户 A可以在本地计算机上登录到用户 B的帐户一样。(等的目录所有权不同$HOME
。这就是su
目的)。
要创建无密码登录,让我们假设用户 A和计算机 A在计算机 B上有一个帐户,并且想在ssh hostnameB
不提供密码的情况下登录。
(1)用户 A在计算机 A上创建一个public_key和private_key(用于加密密钥。由于当前 openssh 中的不安全性,不再支持密钥)。运行时会创建两个文件(默认在 中)。密钥是(私钥)和(公钥)。ssh-keygen -t ecdsa
ecdsa
dsa
ssh-keygen
$HOME/.ssh
id_edcsa
id_ecdsa.pub
(2)用户A无需密码即可登录计算机 B,他必须先将他的public_key传输到计算机 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传输到要访问的主机(无需密码)并将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
文件名没有更改为其他名称。
试一试,如果您有任何问题,请告诉我。我做了数百次——只要你遵守这些规则就没有问题。