如何在 ssh 配置文件中强制用户

如何在 ssh 配置文件中强制用户

我正在尝试覆盖某些主机的用户。我遇到了这个要旨尽管我可以通过删除为每个所需的域帐户创建新主机别名的步骤来改进它。

〜/ .ssh /配置

Host github.com bitbucket.org bitbucket.com
    User git

Host *
  Protocol 2
  UseKeychain yes
  AddKeysToAgent yes
  IdentitiesOnly yes
  IdentityFile ~/.ssh/%r@%h_id_rsa

Hostname不幸的是,与、和其他属性不同Port,设置User git它时不会更改值。

$ ssh -Tv [email protected]

GitHub 仍在尝试对用户进行身份验证,tarranjones而不是git

debug1: Authenticating to github.com:22 as 'tarranjones'

有没有解决的办法?

答案1

您无法覆盖在命令行上指定的用户。仅当未指定时才给出默认值(如果 ~/.ssh/config 中没有给出默认值,whoami则将使用返回的登录名)。因此,如果您使用以下命令,它将按预期工作:ssh -Tv github.com

请注意,您实际上可以将 Host 设置为任何值,而不仅仅是与实际主机名相对应的值,如下所示:

Host gh
    Hostname gh
    User git

那么你就可以使用ssh -Tv gh.

答案2

Host *也可以删除:

IdentityFile %d/.ssh/%r@%h_id_rsa
Protocol 2
UseKeychain yes
AddKeysToAgent yes
IdentitiesOnly yes

Host github.com bitbucket.org bitbucket.com
  User git

不要在命令行上指定用户名,因为这将覆盖配置中的用户名。

答案3

IdentityFile (~/.ssh/%r@%h_id_rsa) 中的%r%h始终与用于身份验证的远程用户和远程主机相同。

在我改变的例子中Hostname

Host github.com bitbucket.org bitbucket.com
  IdentityFile ~/.ssh/%r@%h_id_rsa
  Hostname newhostname.com

测试

$ ssh -Tv [email protected]

结果

debug1: Authenticating to github.com:22 as 'tarranjones'
debug1: Offering RSA public key: ~/.ssh/[email protected]_id_rsa

在这个例子中我改变了User

Host github.com bitbucket.org bitbucket.com
  IdentityFile ~/.ssh/%r@%h_id_rsa
  User git

测试

$ ssh -Tv [email protected]

现在远程主机名不会改变,但如果它确实改变了,这只意味着相应的 IdentityFile 名称将是错误的。

debug1: Authenticating to github.com:22 as 'git'
debug1: Offering RSA public key: ~/.ssh/[email protected]_id_rsa

使用percent_expand远程主机名%h不适用于命名身份文件。如果您希望它与用于身份验证的远程主机名不同,则始终需要对此进行硬编码。

我能想到的最好的就是这个。

#Set Git User Domains
Host *-github.com *-bitbucket.org *-bitbucket.com
  User git

#IdentityFile
Host tarranjones-*
  IdentityFile ~/.ssh/tarranjones@%h_id_rsa

Host otherusername-*
  IdentityFile ~/.ssh/otherusername@%h_id_rsa

#Hostnames
Host *-github.com
  Hostname github.com

Host *-bitbucket.com *-bitbucket.org
  Hostname bitbucket.org

Host *
  Protocol 2
  UseKeychain yes
  AddKeysToAgent yes
  IdentitiesOnly yes

用法

$ ssh -Tv tarranjones-github.com

结果

debug1: Authenticating to github.com:22 as 'git'
debug1: Offering RSA public key: ~/.ssh/[email protected]_id_rsa

请参阅更新要点

相关内容