Forzar ssh para solicitar al usuario

11

Cuando ejecuta ssh sin un argumento login_name, automáticamente usa su nombre de usuario local como login_name. por ejemplo:

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

¿Hay alguna manera de forzar a ssh a solicitar login_name?


fuente

Respuestas:

10

Si está hablando de OpenSSH, la respuesta es no (puede verificar la fuente ). Como señaló @cnicutar, puede usar ssh user@hosto configurar alias a lo .ssh/configlargo de las líneas de

Host meh
  HostName foo
  User bar

y luego ssh meh.

themel
fuente
Esta es la respuesta que estaba buscando. Estoy usando ssh en una secuencia de comandos, por lo que puedo pedirle al usuario su nombre antes de hacer la llamada, solo quería ver si había alguna manera de que ssh pudiera ahorrarme el trabajo.
4

Dado sshque no tiene una opción para forzar una solicitud de nombre de usuario; puede crear el siguiente script en su ~/bindirectorio y nombrarlo 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]");
    }
}

Luego, haga que el script sea ejecutable:

chmod 755 ~/bin/ssh

Asegúrese de tener $HOME/binen su PATH(poner export PATH=$HOME/bin:$PATHen su ~/.bashrco /etc/bashrcy source ~/.bashrco source /etc/bashrc).

Luego, ejecútelo como lo haría ssh:

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

No lo creo, si lo fuera, sería a través de .sshconfig

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

Puede intentar configurar el Usuario en algo ilegal para ver qué hace.

Lou Franco
fuente
Acabo de probar esto por diversión: en [ 12:56 Jonathan@MacBookPro ~ ]$ ssh /dev/null@somehostrealidad funciona ...: /dev/null@somehost's password: -> Permission denied, please try again.. Por supuesto, en los hosts /var/log/securese muestra sshd[21936]: pam_sepermit(sshd:auth): Cannot determine the user's namey sshd[21936]: pam_succeed_if(sshd:auth): error retrieving information about user.
Chown
0

Esta es una adaptación de la respuesta de @ meh.

En un script de shell, solicitamos el nombre de usuario.

Pasamos el nombre de usuario en una llamada posterior a ssh.

Los siguientes carreras uptimeen contosso.com:

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

Aquí hay una muestra de salida:

$ ./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
fuente
-1

Entonces estaba teniendo el mismo problema. Estaba usando cmd

ssh "IP address"

ssh 000.000.000.0

Y estaba pidiendo de inmediato la contraseña de un usuario que no existía (Nombre de mi computadora).

solución realmente simple, solo use este comando en su lugar:

ssh root@"IP address"

ssh [email protected]

Puede reemplazar root con cualquier nombre de usuario que desee. Esto hará que el servidor le solicite la contraseña del nombre de usuario que desea.

kennedy484
fuente
Esto realmente no responde la pregunta. Además, el método que sugiere ya se sugirió en otra respuesta hace cuatro años.
kasperd