Khi bạn chạy ssh mà không có đối số login_name, nó sẽ tự động sử dụng tên người dùng cục bộ của bạn làm tên đăng nhập. ví dụ:
cogan@localhost$ ssh myserver
cogan@myserver's password:
Có cách nào để buộc ssh nhắc nhở login_name không?
Khi bạn chạy ssh mà không có đối số login_name, nó sẽ tự động sử dụng tên người dùng cục bộ của bạn làm tên đăng nhập. ví dụ:
cogan@localhost$ ssh myserver
cogan@myserver's password:
Có cách nào để buộc ssh nhắc nhở login_name không?
Câu trả lời:
Nếu bạn đang nói về OpenSSH, câu trả lời là không (bạn có thể kiểm tra nguồn ). Như @cnicutar đã chỉ ra, bạn có thể sử dụng ssh user@hosthoặc định cấu hình các bí danh .ssh/configdọc theo dòng
Host meh
HostName foo
User bar
và sau đó ssh meh.
Vì sshkhông có tùy chọn buộc dấu nhắc tên người dùng; bạn có thể tạo tập lệnh sau trong ~/binthư mục của mình và đặt tên cho nó 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]");
}
}
Sau đó, làm cho tập lệnh thực thi:
chmod 755 ~/bin/ssh
Hãy chắc chắn rằng bạn có $HOME/bintrong bạn PATH(đặt export PATH=$HOME/bin:$PATHtại của bạn ~/.bashrchay /etc/bashrcvà source ~/.bashrchay source /etc/bashrc).
Sau đó, chạy nó như bạn muốn ssh:
[ 12:49 jon@hozbox ~ ]$ ssh localhost
Enter your username: bob
bob@localhost's password:
[ 12:50 bob@hozbox /home/bob ]$
Tôi không nghĩ vậy - nếu có, nó sẽ thông qua .sshconfig
http://linux.die.net/man/5/ssh_config
Bạn có thể thử đặt Người dùng thành một cái gì đó bất hợp pháp để xem những gì nó làm.
[ 12:56 Jonathan@MacBookPro ~ ]$ ssh /dev/null@somehostthực sự hoạt động ..: /dev/null@somehost's password: -> Permission denied, please try again.. Tất nhiên, trong các máy chủ lưu trữ /var/log/securenó hiển thị sshd[21936]: pam_sepermit(sshd:auth): Cannot determine the user's namevà sshd[21936]: pam_succeed_if(sshd:auth): error retrieving information about user.
Đây là bản phóng tác của câu trả lời của @ meh.
Trong một kịch bản shell, chúng tôi nhắc tên người dùng.
Chúng tôi chuyển tên người dùng trong một cuộc gọi tiếp theo đến ssh.
Sau đây chạy uptimetrên contosso.com:
sshhost=contosso.com
read -p "$sshhost user [$USER]: " sshuser
[ "$sshuser" == "" ] && sshuser=$USER
ssh $sshuser@$sshhost uptime
Đây là một đầu ra mẫu:
$ ./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
$
Vì vậy, tôi đã có cùng một vấn đề. Tôi đã sử dụng cmd
ssh "IP address"
ssh 000.000.000.0
Và nó đã hỏi ngay mật khẩu cho một người dùng không tồn tại (Tên máy tính của tôi).
sửa chữa thực sự đơn giản chỉ cần sử dụng lệnh này thay thế:
ssh root@"IP address"
ssh root@000.000.000.0
Bạn có thể thay thế root bằng bất kỳ tên người dùng nào bạn muốn. Điều này sẽ khiến máy chủ nhắc bạn nhập mật khẩu vào tên người dùng mà bạn mong muốn.