Configuração SSH: substitua o nome de usuário padrão

271

É possível configurar sshpara saber qual deve ser meu nome de usuário?

Por padrão, ele usa o nome de usuário atual, o que não está correto no meu caso.

Estou em um laptop emprestado e meu nome de usuário está loaner, mas quero dizer sshque meu nome de usuário está buck.

Pontos de bônus: meu nome de usuário em casa é bgolemon. Se eu pudesse configurar o nome de usuário por host, seria ainda melhor.

Bukzor
fonte
3
Stack Overflow é um site para perguntas sobre programação e desenvolvimento. Esta questão parece estar fora de tópico, porque não se trata de programação ou desenvolvimento. Consulte Quais tópicos posso perguntar aqui na Central de Ajuda. Talvez o Superusuário ou o Unix e Linux Stack Exchange sejam um lugar melhor para perguntar. Consulte também Onde postar perguntas sobre Dev Ops?
JWW
3
Esta é uma pergunta tão boa!
Nicolas S.Xu
resposta aceito aqui é melhor qualidade do que aqueles de superusuário: inclui (default) o uso directiva global de usuários e comentários adicionados torná prioridades directiva clara
Rondo

Respostas:

449

Crie um arquivo chamado configdentro ~/.ssh. Dentro do arquivo você pode adicionar:

Host *
    User buck

Ou adicione

Host example
    HostName example.net
    User buck

O segundo exemplo definirá um nome de usuário e é específico ao nome do host, enquanto o primeiro exemplo define apenas um nome de usuário. E quando você usa o segundo, você não precisa usar ssh example.net; ssh exampleSerá suficiente.

Learath2
fonte
134
Provavelmente vale a pena ressaltar que, de acordo com 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.Portanto, a Host *seção provavelmente deve ir no final.
quodlibetor
9
Vale a pena notar que o arquivo de configuração será processado da maneira de cima para baixo, preenchendo cada campo (Usuário, HostName ...) e ignorando campos repetidos se várias diretivas de host forem correspondidas. Se você definir Host *, User jdoeno topo, em seguida, definir Host example, HostName abc.example.com, User root, a tentativa ssh exampleserá o mesmo como se você entrou ssh [email protected]. Para definir padrões ssh (ie. User root), A Host *diretiva precisa ser na parte inferior do arquivo de configuração.
Mr.B
17
Além disso, não esqueça o chmod 600 em .ssh / config
Sven
Observe que, se houver vários nomes de host nos quais o servidor possa ser acessado (ou se você desejar o mesmo nome de usuário padrão para vários servidores), altere a primeira linha para Host server1.local example.net *.example.orge se livre da HostNamelinha.
Lèse majesté
44

Se você deseja ssh apenas algumas vezes, como em um computador emprestado ou compartilhado, tente:

ssh buck@hostname

ou

ssh -l buck hostname
gpojd
fonte
1
Obrigado, mas eu já estou familiarizado com isso. Parece redundante especificar buck @ host quando é sempre buck @ host. Estou tentando encontrar um método para representar essas informações em um arquivo de configuração.
bukzor
1
Você considerou algo tão simples como o apelido sshhostname = 'ssh buck @ hostname'?
gpojd
Sim, eu tenho. A resposta de Learath2 é exatamente o que eu estava procurando. Posso verificar isso no meu repositório dotfiles e não me preocupar com isso novamente.
bukzor
Peguei a raiz do alias porque me conecto a máquinas para clientes diferentes, onde meu nome de usuário é diferente em cada ambiente de cliente. Outra abordagem que suponho seria ter diferentes ambientes de shell local para definir o ssh e as configurações relacionadas para cada cliente. Ou uma VM por cliente.
precisa
6

man ssh_config diz

Do utilizador

Especifica o usuário para efetuar login como. Isso pode ser útil quando um nome de usuário diferente é usado em máquinas diferentes. Isso evita o problema de lembrar o nome do usuário na linha de comando.

nes1983
fonte
1
"Identidade" neste caso é equivalente ao uso usual de "senha". Estes são os dados que autentica você, mas não ajuda especificar quem você está tentando autenticar como .
bukzor
Opa Há uma configuração de usuário lá também.
nes1983
0

Você pode usar um atalho. Crie um arquivo .bashrc no seu diretório pessoal. Lá, você pode adicionar o seguinte:

alias sshb="ssh buck@host"

Para disponibilizar o alias no seu terminal, você pode fechar e abrir o terminal ou executar

source ~/.bashrc

Então você pode conectar-se apenas digitando:

sshb
Frank Forte
fonte
1
Isso é ótimo para um host específico, mas como continuo me conectando a um trilhão de servidores diferentes, isso é bastante inútil. Em vez disso, configure .ssh/configcom as configurações apropriadas. Eu vim procurando o *cuidado selvagem (e aprendi que deveria estar no fundo).
mazunki
0

Há uma gema Ruby que faz interface com o seu ssharquivo de configuração, que é chamado sshez.

Tudo que você precisa fazer é sshez <alias> [email protected] -p <port-number>, e então você pode se conectar usando ssh <alias>. Também é útil, pois você pode listar seus aliases usando sshez liste pode removê-los facilmente usando sshez remove alias.

Oss
fonte