Forçar o ssh a solicitar o usuário

11

Quando você executa o ssh sem um argumento login_name, ele automaticamente usa seu nome de usuário local como o login_name. por exemplo:

cogan@localhost$ ssh myserver
cogan@myserver's password: 

Existe uma maneira de forçar o ssh a solicitar o login_name?


fonte

Respostas:

10

Se você está falando sobre o OpenSSH, a resposta é não (você pode verificar a fonte ). Como fora apontado por @cnicutar, você pode usar ssh user@hostou aliases configurar no .ssh/configlongo das linhas de

Host meh
  HostName foo
  User bar

e depois ssh meh.

themel
fonte
Esta é a resposta que eu estava procurando. Estou usando ssh em um script, para que eu possa solicitar o nome do usuário antes de fazer a chamada, só queria ver se havia uma maneira de o ssh salvar o trabalho.
4

Como sshnão tem uma opção para forçar um prompt de nome de usuário; você pode criar o seguinte script em seu ~/bindiretório e nomeá-lo ssh:

#!/usr/bin/perl

my $user_at_address = $ARGV[0];
my @u_a = split(/@/, $user_at_address);

if (defined $u_a[1])
{
    if ( $^O == 'linux' )
    {
        exec ("/usr/bin/ssh $u_a[0]\@$u_a[1]");
    }
    if ( $^O == 'solaris' )
    {
        exec ("/usr/local/bin/ssh $u_a[0]\@$u_a[1]");
    }
}
else
{
    print "Enter your username: ";
    my $username = <STDIN>;
    chomp ( $username );
    if ( $^O == 'linux' )
    {
        exec ("/usr/bin/ssh $username\@$u_a[0]");
    }
    if ( $^O == 'solaris' )
    {
        exec ("/usr/local/bin/ssh $username\@$u_a[0]");
    }
}

Em seguida, torne o script executável:

chmod 755 ~/bin/ssh

Certifique-se de ter o $HOME/binseu PATH(coloque o export PATH=$HOME/bin:$PATHseu ~/.bashrcou /etc/bashrce source ~/.bashrcou source /etc/bashrc).

Em seguida, execute-o como faria ssh:

[ 12:49 jon@hozbox ~ ]$ ssh localhost
Enter your username: bob
bob@localhost's password:
[ 12:50 bob@hozbox /home/bob ]$
chown
fonte
0

Eu acho que não - se fosse, seria através do .sshconfig

http://linux.die.net/man/5/ssh_config

Você pode tentar configurar o Usuário como algo ilegal para ver o que ele faz.

Lou Franco
fonte
Eu apenas tentei isso por diversão: [ 12:56 Jonathan@MacBookPro ~ ]$ ssh /dev/null@somehostrealmente funciona ..: /dev/null@somehost's password: -> Permission denied, please try again.. Claro, nos hosts /var/log/securemostra sshd[21936]: pam_sepermit(sshd:auth): Cannot determine the user's namee sshd[21936]: pam_succeed_if(sshd:auth): error retrieving information about user.
Chown
0

Esta é uma adaptação da resposta de @ meh.

Em um script de shell, solicitamos o nome de usuário.

Passamos o nome de usuário em uma chamada subsequente para ssh.

O seguinte é executado uptimeem contosso.com:

sshhost=contosso.com
read -p "$sshhost user [$USER]: " sshuser
[ "$sshuser" == "" ] && sshuser=$USER
ssh $sshuser@$sshhost uptime

Aqui está um exemplo de saída:

$ ./run-script.sh 
contosso.com user [stephen]: billgates
billgates@contosso.com password:
 10:57:12 up 71 days,  1:01,  2 users,  load average: 0.00, 0.04, 0.05
$
Stephen Quan
fonte
-1

Então, eu estava tendo o mesmo problema. Eu estava usando cmd

ssh "IP address"

ssh 000.000.000.0

E estava solicitando imediatamente a senha para um usuário que não existia (Nome do meu computador).

correção realmente simples, basta usar este comando:

ssh root@"IP address"

ssh [email protected]

Você pode substituir root por qualquer nome de usuário que desejar. Isso fará com que o servidor solicite a senha para o nome de usuário desejado.

kennedy484
fonte
Isso realmente não responde à pergunta. Além do método que você sugere, já foi sugerido em outra resposta há quatro anos.
kasperd