Forcer ssh à inviter l'utilisateur

11

Lorsque vous exécutez ssh sans argument login_name, il utilise automatiquement votre nom d'utilisateur local comme login_name. par exemple:

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

Existe-t-il un moyen de forcer ssh à demander login_name?


la source

Réponses:

10

Si vous parlez d'OpenSSH, la réponse est non (vous pouvez vérifier la source ). Comme indiqué par @cnicutar, vous pouvez utiliser ssh user@hostou configurer des alias dans .ssh/configle sens de

Host meh
  HostName foo
  User bar

et puis ssh meh.

themel
la source
C'est la réponse que je cherchais. J'utilise ssh dans un script, donc je peux simplement demander à l'utilisateur son nom avant de passer l'appel, je voulais juste voir s'il y avait un moyen pour que ssh me sauve le travail.
4

Depuis sshn'a pas d'option pour forcer une invite de nom d'utilisateur; vous pouvez créer le script suivant dans votre ~/binrépertoire et le nommer 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]");
    }
}

Ensuite, rendez le script exécutable:

chmod 755 ~/bin/ssh

Assurez-vous que vous avez $HOME/bindans votre PATH(mettez export PATH=$HOME/bin:$PATHvotre ~/.bashrcou /etc/bashrcet source ~/.bashrcou source /etc/bashrc).

Ensuite, exécutez-le comme vous le feriez ssh:

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

Je ne pense pas - si c'était le cas, ce serait via .sshconfig

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

Vous pouvez essayer de définir l'utilisateur sur quelque chose d'illégal pour voir ce qu'il fait.

Lou Franco
la source
J'ai juste essayé ceci pour le plaisir: [ 12:56 Jonathan@MacBookPro ~ ]$ ssh /dev/null@somehostfonctionne réellement ..: /dev/null@somehost's password: -> Permission denied, please try again.. Bien sûr, dans les hôtes, /var/log/secureil montre sshd[21936]: pam_sepermit(sshd:auth): Cannot determine the user's nameet sshd[21936]: pam_succeed_if(sshd:auth): error retrieving information about user.
chown
0

Ceci est une adaptation de la réponse de @ meh.

Dans un script shell, nous demandons le nom d'utilisateur.

Nous transmettons le nom d'utilisateur lors d'un appel ultérieur à ssh.

Ce qui suit fonctionne uptimesur contosso.com:

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

Voici un exemple de sortie:

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

J'avais donc le même problème. J'utilisais cmd

ssh "IP address"

ssh 000.000.000.0

Et il demandait immédiatement le mot de passe d'un utilisateur qui n'existait pas (nom de mon ordinateur).

solution vraiment simple, utilisez simplement cette commande à la place:

ssh root@"IP address"

ssh [email protected]

Vous pouvez remplacer root par n'importe quel nom d'utilisateur que vous souhaitez. Cela entraînera le serveur pour vous demander le mot de passe pour le nom d'utilisateur que vous désirez.

kennedy484
la source
Cela ne répond pas vraiment à la question. En outre, la méthode que vous proposez a déjà été suggérée dans une autre réponse il y a quatre ans.
kasperd