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

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

我想通过 ssh从一个用户/客户端组合(例如, user1@cl)访问用户/服务器组合(例如, ),并使用两种不同类型的访问:user2@srv

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

    command="bzr serve --inet --directory=/repodir --allow-writes",no-port-forwarding,no-X11-forwarding,no-agent-forwarding ssh-rsa ... user1@cl
    
  2. 访问类型 #2 是登录 shell。为此,我添加了一条“通常”行(#2),如下~user2/.ssh/authorized_keys所示

    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,但我想这并不重要。

相关帖子(但据我所知,没有解决我的情况):

https://stackoverflow.com/questions/2419566/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

  1. 在您的客户端计算机上生成两个密钥user1,例如/home/user1/key1/home/user1/key2。如果您没有特别强烈的安全顾虑,您可以为其中之一提供一个空密码,例如key1
  2. 使用以下命令将两个密钥复制到服务器ssh-copy-id

    ssh-copy-id -i ~/.ssh/key1 [email protected]
    ssh-copy-id -i ~/.ssh/key2 [email protected]
    

    使用两者登录,以确保它们正常工作:

    ssh -i ~/.ssh/key1 [email protected]
    ssh -i ~/.ssh/key2 [email protected]
    
  3. 在服务器上编辑您的~user2/.ssh/authorized_keys, 并添加command="bzr ..." 到第一个密钥。

  4. 返回客户端计算机编辑文件~user1/.ssh/config,并为两个密钥添加别名。像这样的东西:

    Host alias1
        HostName        server.example.com
        User            user2
        IdentityFile    /home/user1/.ssh/key1
        ControlPath     ~/.ssh/ctl1-%u-%r-%h-%p
        ControlMaster   auto
        ControlPersist  5m
    
    Host alias2
        HostName        server.example.com
        User            user2
        IdentityFile    /home/user1/.ssh/key2
    
  5. 现在使用bzr+ssh://alias1for bazaar、 和ssh alias2作为登录 shell。

进一步编辑~/.ssh/config以满足您的需要,语法与/etc/ssh/ssh_config.这就是全部了。

答案2

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

然后,bzr工作正常,并且为了登录我使用

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

这表明使用替代身份。

相关内容