Paksa ssh untuk meminta pengguna

11

Ketika Anda menjalankan ssh tanpa argumen login_name, ia secara otomatis menggunakan nama pengguna lokal Anda sebagai login_name. sebagai contoh:

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

Apakah ada cara untuk memaksa ssh untuk meminta login_name?


sumber

Jawaban:

10

Jika Anda berbicara tentang OpenSSH, jawabannya adalah tidak (Anda dapat memeriksa sumbernya ). Seperti yang ditunjukkan oleh @cnicutar, Anda dapat menggunakan ssh user@hostatau mengkonfigurasi alias di .ssh/configsepanjang baris

Host meh
  HostName foo
  User bar

dan kemudian ssh meh.

themel
sumber
Ini jawaban yang saya cari. Saya menggunakan ssh dalam sebuah skrip, jadi saya bisa meminta pengguna untuk nama mereka sendiri sebelum melakukan panggilan, saya hanya ingin melihat apakah ada cara agar ssh menyelamatkan saya dari pekerjaan itu.
4

Karena sshtidak memiliki opsi untuk memaksa prompt nama pengguna; Anda dapat membuat skrip berikut di ~/bindirektori Anda dan beri nama 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]");
    }
}

Kemudian, buat skrip tersebut dapat dieksekusi:

chmod 755 ~/bin/ssh

Pastikan Anda memiliki $HOME/bindi PATH(dimasukkan export PATH=$HOME/bin:$PATHke Anda ~/.bashrcatau /etc/bashrcdan source ~/.bashrcatau source /etc/bashrc).

Kemudian, jalankan seperti yang Anda inginkan ssh:

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

Saya tidak berpikir begitu - jika ya, itu akan melalui .sshconfig

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

Anda dapat mencoba mengatur Pengguna ke sesuatu yang ilegal untuk melihat apa yang dilakukannya.

Lou Franco
sumber
Saya baru saja mencoba ini untuk bersenang-senang: [ 12:56 Jonathan@MacBookPro ~ ]$ ssh /dev/null@somehostbenar-benar berfungsi ..: /dev/null@somehost's password: -> Permission denied, please try again.. Tentu saja, di host /var/log/secureitu menunjukkan sshd[21936]: pam_sepermit(sshd:auth): Cannot determine the user's namedan sshd[21936]: pam_succeed_if(sshd:auth): error retrieving information about user.
chown
0

Ini adalah adaptasi dari jawaban @ meh.

Dalam skrip shell, kami meminta nama pengguna.

Kami meneruskan nama pengguna dalam panggilan berikutnya ke ssh.

Berikut ini berjalan uptimepada contosso.com:

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

Berikut ini contoh keluaran:

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

Jadi saya mengalami masalah yang sama. Saya menggunakan cmd

ssh "IP address"

ssh 000.000.000.0

Dan itu segera meminta kata sandi untuk pengguna yang tidak ada (Nama Komputer saya).

perbaikan sangat sederhana, gunakan saja perintah ini:

ssh root@"IP address"

ssh [email protected]

Anda dapat mengganti root dengan nama pengguna yang Anda inginkan. Ini akan menyebabkan server meminta kata sandi kepada nama pengguna yang Anda inginkan.

kennedy484
sumber
Ini tidak benar-benar menjawab pertanyaan itu. Selain metode yang Anda sarankan sudah disarankan dalam jawaban lain empat tahun lalu.
kasperd