从给定 user1/client 到相同 user2/server 的多种 ssh 访问类型

Multiple ssh access types from a given user1/client to the same user2/server

我想通过 ssh 从一个 user/client 组合(例如,user1@cl)访问一个 user/server 组合(例如,user2@srv),有两种不同的类型访问权限:

  1. 访问类型 #1 将仅限于与集市存储库的交互。 为此,我在 ~user2/.ssh/authorized_keys 中添加了一行 (#1),例如

    command="bzr serve --inet --directory=/repodir --allow-writes",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-rsa ... user1@cl
    
  2. 访问类型 #2 将是登录 shell。 为此,我在 ~user2/.ssh/authorized_keys 中添加了一个 "usual" 行(#2),例如

    ssh-rsa ... user1@cl
    

据我了解和测试,两条线不能同时使用。 即,如果第 1 行首先出现在 ~user2/.ssh/authorized_keys 中,那么我将能够与 bzr 存储库进行交互,但我将无法执行

[user1@cl]$ ssh user2@srv

如果第 2 行首先出现在 ~user2/.ssh/authorized_keys 中,那么我可以执行 ssh,但是任何 bzr 操作都会给出

bzr: ERROR: Not a branch ...

有什么办法可以解决吗?

我正在使用 RHEL7,但我想这并不重要。

相关帖子(但据我所知,不是针对我的情况):

Best way to use multiple SSH private keys on one client

https://serverfault.com/questions/142997/what-options-can-be-put-into-a-ssh-authorized-keys-file

https://serverfault.com/questions/749474/ssh-authorized-keys-command-option-multiple-commands

https://askubuntu.com/questions/1962/how-can-multiple-private-keys-be-used-with-ssh

我使用了两个不同的密钥对(例如,第 1 对用于 bzr,第 2 对用于 ssh 登录)。 我在 ~user2/.ssh/authorized_keys 中添加了相应的行。 私钥 1 存储在文件 id_rsa 中(默认读取), 私钥 2 存储在文件 id_rsa_ssh.

然后,bzr正常工作,我使用

登录
[user1@cl]$ ssh -i id_rsa_ssh user2@srv

表示使用其他身份。