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@host
hoặc định cấu hình các bí danh .ssh/config
dọc theo dòng
Host meh
HostName foo
User bar
và sau đó ssh meh
.
Vì ssh
khô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 ~/bin
thư 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/bin
trong bạn PATH
(đặt export PATH=$HOME/bin:$PATH
tại của bạn ~/.bashrc
hay /etc/bashrc
và source ~/.bashrc
hay 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@somehost
thự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/secure
nó hiển thị sshd[21936]: pam_sepermit(sshd:auth): Cannot determine the user's name
và 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 uptime
trê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.