-2

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

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

谢谢!!

4

1 回答 1

1

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

要创建无密码登录,让我们假设用户 A计算机 A在计算机 B上有一个帐户,并且想在ssh hostnameB不提供密码的情况下登录。

(1)用户 A在计算机 A上创建一个public_keyprivate_key(用于加密密钥。由于当前 openssh 中的不安全性,不再支持密钥)。运行时会创建两个文件(默认在 中)。密钥是(私钥)和(公钥)。ssh-keygen -t ecdsaecdsadsassh-keygen$HOME/.sshid_edcsaid_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文件名没有更改为其他名称。

试一试,如果您有任何问题,请告诉我。我做了数百次——只要你遵守这些规则就没有问题。

于 2016-03-23T07:43:16.900 回答