บังคับ ssh เพื่อให้พร้อมท์สำหรับผู้ใช้


11

เมื่อคุณเรียกใช้ ssh โดยไม่มีอาร์กิวเมนต์ login_name มันจะใช้ชื่อผู้ใช้ในพื้นที่ของคุณโดยอัตโนมัติเป็น login_name ตัวอย่างเช่น:

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

มีวิธีบังคับ ssh ให้พรอมต์ชื่อ login_name หรือไม่?

ssh 

คำตอบ:


10

หากคุณกำลังพูดถึง OpenSSH คำตอบคือไม่ (คุณสามารถตรวจสอบแหล่งที่มา ) ตามที่ระบุโดย @cnicutar คุณสามารถใช้ssh user@hostหรือกำหนดค่า alias ใน.ssh/configบรรทัดของ

Host meh
  HostName foo
  User bar

ssh mehแล้วก็


นี่คือคำตอบที่ฉันต้องการ ฉันใช้ ssh ในสคริปต์ดังนั้นฉันสามารถแจ้งผู้ใช้ถึงชื่อของตัวเองก่อนที่จะโทรออกฉันแค่อยากจะดูว่ามีวิธีที่ฉันจะช่วยให้ฉันทำงานได้หรือไม่

4

เนื่องจากsshไม่มีตัวเลือกสำหรับบังคับให้พร้อมท์ชื่อผู้ใช้ คุณสามารถสร้างสคริปต์ต่อไปนี้ใน~/binไดเรกทอรีของคุณและตั้งชื่อ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]");
    }
}

จากนั้นสร้างสคริปต์ที่ปฏิบัติการได้:

chmod 755 ~/bin/ssh

ตรวจสอบให้แน่ใจว่าคุณมี$HOME/binในของคุณPATH(ใส่export PATH=$HOME/bin:$PATHในของคุณ~/.bashrcหรือ/etc/bashrcและsource ~/.bashrcหรือsource /etc/bashrc)

จากนั้นรันตามที่คุณต้องการssh:

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

0

ฉันไม่คิดอย่างนั้นถ้าเป็นเช่นนั้นมันจะผ่าน. sshconfig

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

คุณสามารถลองตั้งค่าผู้ใช้เป็นสิ่งผิดกฎหมายเพื่อดูว่ามันทำอะไร


ฉันแค่พยายามนี้เพื่อความสนุกสนาน: [ 12:56 Jonathan@MacBookPro ~ ]$ ssh /dev/null@somehostใช้งานได้จริง .. : ->/dev/null@somehost's password: Permission denied, please try again.แน่นอนในครอบครัว/var/log/secureมันแสดงให้เห็นและsshd[21936]: pam_sepermit(sshd:auth): Cannot determine the user's name sshd[21936]: pam_succeed_if(sshd:auth): error retrieving information about user
chown

0

นี่คือการปรับคำตอบของ @ meh

ในเชลล์สคริปต์เราขอให้ชื่อผู้ใช้

เราส่งชื่อผู้ใช้ในการโทรไปที่ ssh

วิ่งต่อไปuptimeได้ที่contosso.com:

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

นี่คือผลลัพธ์ตัวอย่าง:

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

-1

ดังนั้นฉันจึงมีปัญหาเดียวกัน ฉันใช้คำสั่ง

ssh "IP address"

ssh 000.000.000.0

และมันก็ถามหารหัสผ่านสำหรับผู้ใช้ที่ไม่มีอยู่จริง (ชื่อคอมพิวเตอร์ของฉัน)

การแก้ไขที่ง่ายมากเพียงใช้คำสั่งนี้แทน:

ssh root@"IP address"

ssh root@000.000.000.0

คุณสามารถแทนที่รูทด้วยชื่อผู้ใช้ที่คุณต้องการ นี่จะทำให้เซิร์ฟเวอร์แจ้งให้คุณใส่รหัสผ่านในชื่อผู้ใช้ที่คุณต้องการ


นี่ไม่ได้ตอบคำถามจริงๆ นอกจากวิธีที่คุณแนะนำแล้วได้รับคำแนะนำในคำตอบอีกสี่ปีที่ผ่านมา
kasperd
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.