Конфигурация SSH: переопределить имя пользователя по умолчанию

271

Можно ли настроить, sshчтобы знать, каким должно быть мое имя пользователя?

По умолчанию используется текущее имя пользователя, что в моем случае неверно.

Я использую ноутбук, и мое имя пользователя есть loaner, но я хочу сказать, sshчто мое имя пользователя buck.

Бонусные баллы: мое имя пользователя дома bgolemon. Если бы я мог настроить имя пользователя для каждого хоста, это было бы еще лучше.

bukzor
источник
3
Stack Overflow - сайт для вопросов программирования и разработки. Этот вопрос кажется не по теме, потому что он не касается программирования или разработки. Смотрите, какие темы я могу задать здесь, в Справочном центре. Возможно, лучше спросить Super User или Unix & Linux Stack Exchange . Также см. Где я могу разместить вопросы о Dev Ops?
jww
3
Это такой хороший вопрос!
Николас С. Сюй
принятый ответ здесь лучшего качества, чем у суперпользователя: включает глобальное (по умолчанию) использование пользовательской директивы и добавленные комментарии, разъясняющие приоритеты директивы
Рондо

Ответы:

449

Создайте файл с именем configвнутри ~/.ssh. Внутри файла вы можете добавить:

Host *
    User buck

Или добавить

Host example
    HostName example.net
    User buck

Во втором примере будет задано имя пользователя и имя хоста, а в первом - только имя пользователя. И когда вы используете второй, вам не нужно использоватьssh example.net ; ssh exampleбудет достаточно.

Learath2
источник
134
Вероятно, стоит указать, что в соответствии с man ssh_config: Since 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
9
Стоит отметить, что файл конфигурации будет обрабатываться сверху вниз, заполняя каждое поле (User, HostName ...) и пропуская повторяющиеся поля, если совпадают несколько директив Host. Если определить Host *, User jdoeв верхней части, а затем определить Host example, HostName abc.example.com, User root, пытаясь ssh exampleбудет таким же , как если бы вы ввели ssh jdoe@abc.example.com. Чтобы определить значения по умолчанию ssh (т. Е. User root), Host *Директива должна находиться внизу файла конфигурации.
mr.b
17
Кроме того, не забудьте chmod 600 в .ssh / config
Sven
Обратите внимание, что если существует несколько имен хостов, к которым сервер доступен (или если вы хотите использовать одно и то же имя пользователя по умолчанию для нескольких серверов), вы должны изменить первую строку на Host server1.local example.net *.example.orgи просто избавиться от этой HostNameстроки.
Lèse Majesté
44

Если вы хотите использовать ssh только несколько раз, например, на чужом или совместно используемом компьютере, попробуйте:

ssh buck@hostname

или

ssh -l buck hostname
gpojd
источник
1
Спасибо, но я уже знаком с этим. Кажется излишним указывать бак @ хост, когда он всегда бак @ хост. Я пытаюсь найти способ для представления этой информации в файле конфигурации.
Букзор
1
Вы рассматривали что-то такое простое, как псевдоним sshhostname = 'ssh buck @ hostname'?
gpojd
Да. Ответ Learath2 - именно то, что я искал. Я могу проверить это в своем репозитории dotfiles и больше не беспокоиться об этом.
Букзор
Я взял псевдоним root, потому что я подключаюсь к компьютерам для разных клиентов, где мое имя пользователя отличается в каждой клиентской среде. Другой подход, который я предполагаю, состоит в том, чтобы иметь различные локальные среды оболочки для установки ssh и связанных настроек для каждого клиента. Или виртуальная машина для каждого клиента.
Ник Спейсек
6

man ssh_config говорит

пользователь

Определяет пользователя для входа в систему как. Это может быть полезно, когда на разных компьютерах используется другое имя пользователя. Это избавляет от необходимости помнить, чтобы дать имя пользователя в командной строке.

nes1983
источник
1
«Идентичность» в этом случае эквивалентна обычному использованию «пароля». Это данные , которые проверяют подлинность вас, но не поможет определить , кто вы пытаетесь проверить подлинность , как .
Букзор
К сожалению. Там также есть пользовательские настройки.
nes1983
0

Вы можете использовать ярлык. Создайте файл .bashrc в вашем домашнем каталоге. Там вы можете добавить следующее:

alias sshb="ssh buck@host"

Чтобы сделать псевдоним доступным в вашем терминале, вы можете либо закрыть и открыть свой терминал, либо запустить

source ~/.bashrc

Затем вы можете подключиться, просто набрав:

sshb
Фрэнк Форте
источник
1
Это отлично подходит для одного конкретного хоста, но, поскольку я продолжаю подключаться к триллиону разных серверов, это довольно бесполезно. Скорее настроить .ssh/configс соответствующими настройками. Я пришел в поисках *дикой помощи (и узнал, что она должна быть внизу).
мазунки
0

Существует рубиновый гем, который связывает ваш sshконфигурационный файл, который называется sshez.

Все, что вам нужно сделать, это sshez <alias> username@example.com -p <port-number>, а затем вы можете подключиться с помощью ssh <alias>. Это также полезно, поскольку вы можете перечислить свои псевдонимы с помощью sshez listи легко удалить их с помощью sshez remove alias.

Oss
источник