我想通过 ssh从一个用户/客户端组合(例如, user1@cl
)访问用户/服务器组合(例如, ),并使用两种不同类型的访问:user2@srv
访问类型#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 是登录 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
- 在您的客户端计算机上生成两个密钥
user1
,例如/home/user1/key1
和/home/user1/key2
。如果您没有特别强烈的安全顾虑,您可以为其中之一提供一个空密码,例如key1
。 使用以下命令将两个密钥复制到服务器
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]
在服务器上编辑您的
~user2/.ssh/authorized_keys
, 并添加command="bzr ..."
到第一个密钥。返回客户端计算机编辑文件
~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
现在使用
bzr+ssh://alias1
forbazaar
、 和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
这表明使用替代身份。