Configuration SSH: remplacer le nom d'utilisateur par défaut

271

Est-il possible de configurer sshpour savoir quel devrait être mon nom d'utilisateur?

Par défaut, il utilise le nom d'utilisateur actuel, ce qui n'est pas correct dans mon cas.

Je suis sur un ordinateur portable prêteur et mon nom d'utilisateur est loaner, mais je veux dire sshque mon nom d'utilisateur est buck.

Points bonus: mon nom d'utilisateur à la maison est bgolemon. Si je pouvais configurer le nom d'utilisateur par hôte, ce serait encore mieux.

bukzor
la source
3
Stack Overflow est un site pour les questions de programmation et de développement. Cette question semble être hors sujet car elle ne concerne pas la programmation ou le développement. Voir Quels sujets puis-je poser ici dans le centre d'aide. Peut-être que Super User ou Unix & Linux Stack Exchange seraient un meilleur endroit pour demander. Voir aussi Où puis-je poster des questions sur Dev Ops?
2017
3
C'est une si bonne question!
Nicolas S.Xu
la réponse acceptée ici est de meilleure qualité que celle des super-utilisateurs: inclut l'utilisation de la directive utilisateur globale (par défaut) et des commentaires ajoutés rendent les priorités de la directive claires
Rondo

Réponses:

449

Créez un fichier appelé à l' configintérieur ~/.ssh. Dans le fichier, vous pouvez ajouter:

Host *
    User buck

Ou ajoutez

Host example
    HostName example.net
    User buck

Le deuxième exemple définit un nom d'utilisateur et est spécifique au nom d'hôte, tandis que le premier exemple définit uniquement un nom d'utilisateur. Et lorsque vous utilisez le second, vous n'avez pas besoin d'utiliser ssh example.net; ssh examplesera suffisant.

Learath2
la source
134
Cela vaut probablement la peine de souligner que selon 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.Donc, la Host *section devrait probablement aller à la fin.
quodlibetor
9
Il convient de noter que le fichier de configuration sera traité de haut en bas, en remplissant chaque champ (User, HostName ...) et en ignorant les champs répétés si plusieurs directives Host sont mises en correspondance. Si vous définissez Host *, User jdoeen haut, puis définir Host example, HostName abc.example.com, User root, essayant ssh examplesera le même que si vous avez entré ssh [email protected]. Afin de définir les valeurs par défaut de ssh (ie. User root), La Host *directive doit être au bas du fichier de configuration.
mr.b
17
N'oubliez pas non plus chmod 600 sur .ssh / config
Sven
Notez que s'il y a plusieurs noms d'hôtes par lesquels le serveur est accessible (ou si vous voulez le même nom d'utilisateur par défaut pour plusieurs serveurs), vous devez changer la première ligne en Host server1.local example.net *.example.orget simplement vous débarrasser de la HostNameligne.
Lèse majesté
44

Si vous ne souhaitez que ssh quelques fois, par exemple sur un ordinateur emprunté ou partagé, essayez:

ssh buck@hostname

ou

ssh -l buck hostname
gpojd
la source
1
Merci, mais je le connais déjà. Il semble redondant de spécifier buck @ host alors qu'il est toujours buck @ host. J'essaie de trouver une méthode pour représenter ces informations dans un fichier de configuration.
bukzor
1
Avez-vous pensé à quelque chose d'aussi simple que l'alias sshhostname = 'ssh buck @ hostname'?
gpojd
Oui j'ai. La réponse de Learath2 est exactement ce que je cherchais. Je peux vérifier cela dans mon référentiel dotfiles et ne plus m'en soucier.
bukzor
J'ai pris l'alias root car je me connecte à des machines pour différents clients, où mon nom d'utilisateur est différent dans chaque environnement client. Une autre approche, je suppose, consisterait à avoir différents environnements shell locaux pour définir le ssh et les paramètres associés pour chaque client. Ou une machine virtuelle par client.
Nick Spacek
6

man ssh_config dit

Utilisateur

Spécifie l'utilisateur auquel se connecter. Cela peut être utile lorsqu'un nom d'utilisateur différent est utilisé sur différentes machines. Cela évite d'avoir à se rappeler de donner le nom d'utilisateur sur la ligne de commande.

nes1983
la source
1
"Identité" dans ce cas équivaut à l'utilisation habituelle de "mot de passe". Ce sont les données que vous authentifie, mais ne pas l' aide qui précise que vous essayez d'authentifier comme .
bukzor
Oups. Il y a également un paramètre utilisateur.
nes1983
0

Vous pouvez utiliser un raccourci. Créez un fichier .bashrc dans votre répertoire personnel. Vous pouvez y ajouter les éléments suivants:

alias sshb="ssh buck@host"

Pour rendre l'alias disponible dans votre terminal, vous pouvez soit fermer et ouvrir votre terminal, soit exécuter

source ~/.bashrc

Ensuite, vous pouvez vous connecter en tapant simplement:

sshb
Frank Forte
la source
1
C'est génial pour un hôte spécifique, mais comme je continue de me connecter à un billion de serveurs différents, c'est plutôt inutile. Plutôt mis en place .ssh/configavec les paramètres appropriés. Je suis venu à la recherche du *wildcare (et j'ai appris qu'il devrait être au fond).
mazunki
0

Il y a une gemme Ruby qui interface votre sshfichier de configuration qui s'appellesshez .

Tout ce que vous avez à faire est de sshez <alias> [email protected] -p <port-number>vous connecter à l'aide de ssh <alias>. Il est également utile car vous pouvez répertorier vos alias à l'aide sshez listet les supprimer facilement à l'aide sshez remove alias.

Oss
la source