Конфігурація SSH: замініть стандартне ім'я користувача


271

Чи можна налаштувати, sshщоб знати, яким має бути моє ім’я користувача?

За замовчуванням він використовує поточне ім'я користувача, що в моєму випадку не вірно.

Я на ноутбуці, що займається позикою, і моє ім’я користувача loaner, але я хочу сказати, sshщо це моє ім’я користувача buck.

Бонусні бали: вдома моє ім’я користувача - це bgolemon. Якби я міг налаштувати ім’я користувача на хоста, це було б ще краще.


3
Переповнення стека - це сайт для програмування та питань розробки. Це питання видається поза темою, оскільки мова не йде про програмування чи розробку. Дивіться, які теми я можу запитати тут, у довідковому центрі. Можливо, краще користуватися питаннями Super User або Unix & Linux Stack Exchange . Також див. Де я публікую запитання щодо Dev Ops?
jww

3
Це таке гарне запитання!
Nicolas S.Xu

тут прийнята відповідь кращої якості, ніж суперусерська: включає глобальне використання (за замовчуванням) використання директиви користувачів, а коментарі додають чіткі пріоритети директиви
Рондо

Відповіді:


449

Створіть файл, який називається configвсередині ~/.ssh. Всередині файлу можна додати:

Host *
    User buck

Або додати

Host example
    HostName example.net
    User buck

У другому прикладі буде встановлено ім’я користувача та конкретно ім'я хоста, тоді як перший приклад встановлює лише ім'я користувача. І коли ви використовуєте другий, вам не потрібно користуватися ssh example.net; ssh exampleбуде достатньо


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
Варто відзначити, що конфігураційний файл буде оброблятися зверху вниз, заповнюючи кожне поле (користувач, HostName ...) і пропускаючи повторювані поля, якщо збігаються декілька директив хостів. Якщо визначити Host *, User jdoeу верхній частині, а потім визначити Host example, HostName abc.example.com, User root, намагаючись ssh exampleбуде таким же , як якщо б ви ввели ssh jdoe@abc.example.com. Для того, щоб визначити ssh за замовчуванням (тобто User root), Host *директива повинна бути внизу файлу config.
mr.b

17
Крім того, не забудьте chmod 600 on .ssh / config
Sven

Зауважте, що якщо є кілька імен хостів, до яких доступ до сервера доступний (або якщо ви хочете однакове ім’я користувача за замовчуванням для декількох серверів), вам слід змінити перший рядок Host server1.local example.net *.example.orgі просто позбутися HostNameрядка.
Lèse majesté

44

Якщо ви хочете виконати ssh кілька разів, наприклад, на позиченому або спільному комп'ютері, спробуйте:

ssh buck@hostname

або

ssh -l buck hostname

1
Дякую, але я з цим уже знайомий. Здається, зайвим вказати buck @ host, коли це завжди buck @ host. Я намагаюся знайти спосіб представити цю інформацію у файлі конфігурації.
bukzor

1
Ви вважали щось таке просте, як псевдонім sshhostname = 'ssh buck @ hostname'?
gpojd

Так, я маю. Відповідь Learath2 - це саме те, що я шукав. Я можу перевірити це у своєму сховищі dotfiles і більше не хвилюватися про це.
bukzor

Я взяв псевдонім root, тому що я підключаюся до машин для різних клієнтів, де моє ім’я користувача відрізняється в кожному клієнтському середовищі. Іншим підходом, я думаю, було б мати різні локальні середовища оболонки для встановлення ssh та відповідних налаштувань для кожного клієнта. Або VM на клієнта.
Нік Спейпк

6

man ssh_config каже

Користувач

Вказує користувача для входу як. Це може бути корисно, коли інше ім’я користувача використовується на різних машинах. Це економить проблему з необхідністю пам'ятати, щоб вказати ім'я користувача в командному рядку.


1
"Ідентичність" в цьому випадку еквівалентна звичайному використанню "пароля". Це дані , які перевіряють справжність вас, але не допоможе визначити , хто ви намагаєтеся перевірити справжність , як .
bukzor

На жаль Там же є налаштування користувача.
nes1983

0

Можна скористатися ярликом. Створіть .bashrc файл у своєму домашньому каталозі. Там ви можете додати наступне:

alias sshb="ssh buck@host"

Щоб зробити псевдонім доступним у вашому терміналі, його можна або закрити, і відкрити, або запустити

source ~/.bashrc

Потім ви можете підключитися, просто ввівши:

sshb

1
Це чудово підходить для одного конкретного хоста, але оскільки я продовжую підключатися до трильйона різних серверів, це досить марно. Швидше налаштуйтеся .ssh/configз відповідними налаштуваннями. Я прийшов шукати *дику природу (і дізнався, що вона має бути внизу).
мазунки

0

Є дорогоцінний камінь Ruby, який інтерфейсує ваш sshфайл конфігурації, який викликається sshez.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.