เมื่อคุณเรียกใช้ ssh โดยไม่มีอาร์กิวเมนต์ login_name มันจะใช้ชื่อผู้ใช้ในพื้นที่ของคุณโดยอัตโนมัติเป็น login_name ตัวอย่างเช่น:
cogan@localhost$ ssh myserver
cogan@myserver's password:
มีวิธีบังคับ ssh ให้พรอมต์ชื่อ login_name หรือไม่?
เมื่อคุณเรียกใช้ ssh โดยไม่มีอาร์กิวเมนต์ login_name มันจะใช้ชื่อผู้ใช้ในพื้นที่ของคุณโดยอัตโนมัติเป็น login_name ตัวอย่างเช่น:
cogan@localhost$ ssh myserver
cogan@myserver's password:
มีวิธีบังคับ ssh ให้พรอมต์ชื่อ login_name หรือไม่?
คำตอบ:
หากคุณกำลังพูดถึง OpenSSH คำตอบคือไม่ (คุณสามารถตรวจสอบแหล่งที่มา ) ตามที่ระบุโดย @cnicutar คุณสามารถใช้ssh user@host
หรือกำหนดค่า alias ใน.ssh/config
บรรทัดของ
Host meh
HostName foo
User bar
ssh meh
แล้วก็
เนื่องจาก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 ]$
ฉันไม่คิดอย่างนั้นถ้าเป็นเช่นนั้นมันจะผ่าน. 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
นี่คือการปรับคำตอบของ @ 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
$
ดังนั้นฉันจึงมีปัญหาเดียวกัน ฉันใช้คำสั่ง
ssh "IP address"
ssh 000.000.000.0
และมันก็ถามหารหัสผ่านสำหรับผู้ใช้ที่ไม่มีอยู่จริง (ชื่อคอมพิวเตอร์ของฉัน)
การแก้ไขที่ง่ายมากเพียงใช้คำสั่งนี้แทน:
ssh root@"IP address"
ssh root@000.000.000.0
คุณสามารถแทนที่รูทด้วยชื่อผู้ใช้ที่คุณต้องการ นี่จะทำให้เซิร์ฟเวอร์แจ้งให้คุณใส่รหัสผ่านในชื่อผู้ใช้ที่คุณต้องการ