Buộc ssh nhắc nhở người dùng


11

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?

ssh 

Câu trả lời:


10

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.


Đây là câu trả lời tôi đang tìm kiếm. Tôi đang sử dụng ssh trong một tập lệnh, vì vậy tôi chỉ có thể nhắc người dùng tự đặt tên cho họ trước khi thực hiện cuộc gọi, tôi chỉ muốn xem liệu có cách nào để tôi có thể giúp tôi tiết kiệm công việc không.

4

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/bashrcsource ~/.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 ]$

0

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.


Tôi chỉ thử điều này cho vui: [ 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 namesshd[21936]: pam_succeed_if(sshd:auth): error retrieving information about user.
chown

0

Đâ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
$

-1

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.


Điều này không thực sự trả lời câu hỏi. Bên cạnh phương pháp mà bạn đề xuất đã được đề xuất trong một câu trả lời khác bốn năm trước.
kasperd
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.