我非常希望能够在同一台服务器上为不同的用户使用多个 SSH 密钥。我有一台用于虚拟主机和 SSH 隧道的服务器。我已经设置了一个没有专门用于 SSH 隧道的登录 shell 的帐户。我使用 root 用户来管理系统的其余部分。
我有两个 SSH 密钥,一个带有 root 用户的密码,一个没有 SSH 隧道的密码。如何做到这一点,当我以隧道用户身份连接时,它使用隧道密钥,而当我以 root 用户身份连接时,它使用 root 密钥?
如果您为 root 用户设置了一个密钥,为您的隧道用户设置了另一个密钥(通过服务器/远程计算机上的文件authorized_keys),则应自动选择正确的密钥。
这是基于您加载了密钥ssh-agent
并且它们可供ssh
实用程序使用的假设。
否则,您可以使用 手动指定密钥ssh -i <identity file>
。
除此之外,您可以在 ssh_config 文件( ~/.ssh/config或/etc/ssh/ssh_config )中设置别名:
Host server-root
User root
IdentityFile <path to your key>
Hostname <real hostname>
Host server-tunnel
User tunnel-user
IdentityFile <path to your key>
Hostname <real hostname>
然后你使用ssh server-root
or ssh server-tunnel
。
但我想说使用 ssh-agent 可能是最简单的设置。
如果您想在没有 ssh-agent 的情况下自动选择正确的密钥,您可以通过-i
.
引用 OpenSSH 手册页:
-i identity_file
Selects a file from which the identity (private key) for public
key authentication is read. The default is ~/.ssh/identity for
protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and
~/.ssh/id_rsa for protocol version 2. Identity files may also be
specified on a per-host basis in the configuration file. It is
possible to have multiple -i options (and multiple identities
specified in configuration files). ssh will also try to load
certificate information from the filename obtained by appending
-cert.pub to identity filenames.