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