SSH配置:覆盖默认用户名


271

是否可以配置ssh为知道我的用户名是什么?

默认情况下,它使用当前用户名,在我的情况下这是不正确的。

我在借贷者笔记本电脑上,我的用户名是loaner,但是我想告诉ssh我我的用户名是buck

奖励积分:我在家的用户名是bgolemon。如果我可以配置每个主机的用户名,那就更好了。


3
堆栈溢出是一个用于编程和开发问题的站点。这个问题似乎与主题无关,因为它与编程或开发无关。请在帮助中心中查看我可以询问哪些主题。也许超级用户Unix&Linux Stack Exchange是更好的选择。另请参阅我在哪里发布有关Dev Ops的问题?
jww

3
这是一个很好的问题!
Nicolas S.Xu

此处接受的答案要比超级用户的要好:包括全局(默认)用户指令的使用,并添加注释使指令的优先级明确
Rondo

Answers:


449

创建一个名为configinside 的文件~/.ssh。您可以在文件内添加:

Host *
    User buck

或添加

Host example
    HostName example.net
    User buck

第二个示例将设置一个用户名,并且特定于主机名,而第一个示例仅设置一个用户名。当您使用第二个时,您无需使用ssh example.net; ssh example就足够了。


134
根据可能值得指出man ssh_configSince the first obtained value for each parameter is used, more host-specific declarations should be given near the beginning of the file, and general defaults at the end.因此,本Host *节可能应该放在最后。
quodlibetor 2013年

9
值得注意的是,配置文件将以自上而下的方式处理,填充每个字段(用户,主机名...),如果匹配了多个主机指令,则跳过重复的字段。如果定义Host *User jdoe在顶部,然后定义Host exampleHostName abc.example.comUser root,试图ssh example将是,如果你输入的相同ssh jdoe@abc.example.com。为了定义ssh默认值(即User root),Host *指令必须位于配置文件的底部
mr.b

17
另外,不要忘记在.ssh / config上使用chmod 600
Sven 2014年

请注意,如果可以通过该服务器访问多个主机名(或者如果要为多个服务器使用相同的默认用户名),则应将第一行更改为,Host server1.local example.net *.example.org而删除该HostName行。
冒犯君主

44

如果只想几次SSH,例如在借用或共享的计算机上,请尝试:

ssh buck@hostname

要么

ssh -l buck hostname

1
谢谢,但是我已经很熟悉了。在始终为buck @ host时指定buck @ host似乎是多余的。我正在尝试找到一种在配置文件中表示此信息的方法。
bukzor 2012年

1
您是否考虑过像别名sshhostname ='ssh buck @ hostname'这样简单的内容?
gpojd 2012年

是的,我有。Learath2的答案正是我想要的。我可以将其签入我的dotfiles存储库,而不必再担心它。
bukzor 2012年

之所以使用别名root,是因为我连接到不同客户端的计算机,在每个客户端环境中,我的用户名都不同。我想的另一种方法是让不同的本地Shell环境为每个客户端设置ssh和相关设置。或每个客户端一个VM。
Nick Spacek 2013年

6

man ssh_config

用户

指定要以其身份登录的用户。当在不同的计算机上使用不同的用户名时,这很有用。这省去了必须记住在命令行上提供用户名的麻烦。


1
在这种情况下,“身份”等同于“密码”的通常用法。这是对您进行身份验证的数据,但并不能帮助您指定要作为身份验证的对象
bukzor 2012年

哎呀。也有一个用户设置。
nes1983

0

您可以使用快捷方式。在您的主目录中创建一个.bashrc文件。在其中,您可以添加以下内容:

alias sshb="ssh buck@host"

要使别名在您的终端中可用,您可以关闭并打开终端,或运行

source ~/.bashrc

然后,您可以通过输入以下内容进行连接:

sshb

1
这对于一个特定的主机来说很棒,但是当我不断连接到一万亿个不同的服务器时,这是毫无用处的。而是.ssh/config使用适当的设置进行设置。我来寻找*野外护理(并得知它应该在底部)。
mazunki

0

有一个与您的ssh配置文件接口的Ruby gem,称为sshez

所有您需要做的就是sshez <alias> username@example.com -p <port-number>,然后您可以使用连接ssh <alias>。这也是有用的,因为您可以使用列出别名,sshez list并可以使用轻松删除它们sshez remove alias

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.