Tạo người dùng SSH mới trên Ubuntu Server


104

Chỉ cần tạo một máy chủ Ubuntu ảo mới và tôi đang trong quá trình cứng nó để sử dụng sản xuất. Tôi hiện có một tài khoản root. Tôi muốn làm như sau:

  • Tạo một người dùng mới (hãy gọi họ jimcho phần còn lại của điều này). Tôi muốn họ có một /home/thư mục.
  • Cấp jimquyền truy cập SSH.
  • Cho phép jimđến suđể nhổ tận gốc nhưng không thực hiện sudohoạt động.
  • Tắt quyền truy cập SSH gốc.
  • Di chuyển SSHd sang một cổng không chuẩn để giúp ngăn chặn các cuộc tấn công vũ phu.

Vấn đề của tôi nằm ở hai mục đầu tiên. Tôi đã tìm thấy useraddnhưng vì một số lý do, tôi không thể đăng nhập với tư cách người dùng được tạo bằng nó qua SSH. Tôi có cần phải đánh bại SSHd để cho phép điều này không?


Chào! Tôi có thể giúp bạn trong các máy chủ, tôi không biết vấn đề của bạn với SSH là gì, vì đối với tôi với cấu hình mặc định không bao giờ từ chối kết nối của tôi. Bạn có thể thấy man 5 nologin , điều này viết, rằng nếu / etc / nologin tồn tại, bạn chỉ có thể đăng nhập bằng root. Hãy thử đăng nhập bình thường, sau đó viết kết quả.
antivirtel

Vỏ của người dùng là gì? Là nó / thùng / bash? Kiểm tra xem trong / etc / password. Hãy chắc chắn rằng nó không / dev / null hoặc / bin / false.
LFC_fan

Có LFC_fan, hoặc / etc / nologin nữa. Sử dụng (sudo) mèo / etc / passwd | grep jim
antivirtel

1
@B. Roland tôi có một /etc/nologintập tin nhưng nó trống rỗng. Tôi đã xóa nó và khởi động lại ssh nhưng nó vẫn chỉ phản hồi Permission denied, please try again.khi tôi thử và đăng nhập.
Oli

@LFC_fan it / bin / bash
Oli

Câu trả lời:


99

Chỉnh sửa (như root) /etc/ssh/sshd_config. Nối những thứ sau vào nó:

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234khiến SSH nghe trên cổng 1234. Bạn có thể sử dụng bất kỳ cổng nào chưa sử dụng từ 1 đến 65535. Bạn nên chọn một cổng đặc quyền (cổng 1-1024) chỉ có thể được sử dụng bởi root. Nếu một số lý do SSH của bạn ngừng hoạt động vì một lý do nào đó, một ứng dụng giả mạo không thể chặn kết nối.

PermitRootLogin không cho phép đăng nhập root trực tiếp.

AllowUsers jimcho phép người dùng jimđăng nhập thông qua SSH. Nếu bạn không phải đăng nhập từ mọi nơi, bạn có thể làm cho việc này an toàn hơn bằng cách giới hạn jim ở địa chỉ IP (thay thế 1.2.3.4 bằng địa chỉ IP thực tế của bạn):

AllowUsers jim@1.2.3.4

Thay đổi tệp cấu hình /etc/ssh/sshd_configkhông được áp dụng ngay lập tức, để tải lại cấu hình, hãy chạy:

sudo service ssh reload

10
+1: Lưu ý: các hướng dẫn này vẫn có thể áp dụng cho các phiên bản Ubuntu mới hơn (ví dụ: 13.04). Nếu bạn làm muốn rootđăng nhập, tuy nhiên, (có lẽ bạn vẫn thiết lập máy chủ), bạn phải thiết lập PermitRootLoginđể yesvà cũng thêm rootvào AllowUsers.
JRG-Nhà phát triển

4
mật khẩu cho người dùng này là gì?
Wolfpack'08

VPS của tôi đi kèm với mật khẩu gốc để đăng nhập SSH trên cổng 22. Việc thêm câu trả lời vào sshd_config dẫn đến việc root không thể đăng nhập. Có phải vì tôi cũng đã sử dụng cổng 22 cho jim hay còn lý do nào khác?
Wolfpack'08

1
@Lekensteyn Tôi vừa tìm thấy việc thêm một người dùng mới vào Ubuntu sẽ tạo một tài khoản ssh cho người dùng đó .... useradd -m -G sudo,adm -s /bin/bash mecharokpasswd mecharok
Wolfpack'08

3
@ Wolfpack'08 Sử dụng AllowUsers username1,username2để hạn chế đăng nhập SSH cho những người dùng đó. Đảm bảo rằng sshdđược tải lại. Nếu điều này không có ích, xin vui lòng tạo một câu hỏi mới.
Lekensteyn

96

SSH rất kén chọn về quyền và thư mục. Đảm bảo rằng:

  1. Thư mục /home/username/.ssh có quyền "700" và được sở hữu bởi người dùng (không phải root!)
  2. / Home / username / ssh / ủy quyền_key có quyền "600" và được sở hữu bởi người dùng

Sao chép khóa công khai của bạn vào tệp ủy quyền.

sudo chown -R username:username /home/username/.ssh
sudo chmod 0700 /home/username/.ssh
sudo chmod 0600 /home/username/.ssh/authorized_keys

NO cần phải thêm người dùng / etc / ssh / ssh_config.


1
Vấn đề của tôi đã được giải quyết, tôi đã tạo ~./sshroot và không bao giờ trao quyền sở hữu cho người dùng.
Gerve

1
Vấn đề của tôi là tôi đã cố gắng sử dụng /root/.ssh/authorized_keysthay vì /home/bob/.ssh/authorized_keys.
Alex W

Tôi có thể xác nhận: trên lưu trữ VPS của chúng tôi không cần chỉnh sửa ssh_config. Thiết lập thư mục và tập tin đó là đủ.
superjos

2
Đối với tôi, nó phải là chmod 755 /home/username/.ssh nếu không nó sẽ không hoạt động.
Jim W

Dễ dàng hơn nhiều để đăng nhập với tư cách người dùng (hoặc sudo su --login {user}) và chạy ssh-keygen-> Thư mục ".ssh", khóa + cert và quyền đã hoàn tất. Chỉ cần tạo ủy quyền theo hướng dẫn của bạn.
bshea

13

Sẽ có manh mối /var/log/auth.logvề lý do tại sao SSH (hoặc PAM) từ chối nỗ lực đăng nhập. Có thể tìm thấy manh mối bổ sung bằng cách sử dụng -vtùy chọn với ứng dụng khách ssh . Một số tình huống phổ biến, một số đề cập trong các câu trả lời khác:

  • tài khoản người dùng thiếu mật khẩu hoặc bị vô hiệu hóa (xem man passwd, thử đặt lại mật khẩu hoặc kiểm tra nội dung của /etc/shadow).
  • /etc/ssh/sshd_configđược cấu hình để không cho phép đăng nhập ( DenyUsers, AllowUsers, PasswordAuthentication, PubkeyAuthentication, UsePAMvv, thấy man sshd_config).
  • Vỏ của người dùng không được liệt kê trong /etc/shells.
  • vấn đề cho phép khác nhau trên thư mục hay tập tin liên quan đến hoạt động SSH: /etc/ssh, /home/jim/.ssh, /home/jim/.ssh/*vv

Tôi cũng khuyên bạn nên sử dụng adduser (thay vì useradd ) để thêm người dùng mới; nó thân thiện hơn một chút về các cài đặt tài khoản mặc định khác nhau.

Miễn là người dùng không phải là một phần của adminnhóm, họ sẽ không thể sudo để root. Đối với họ để sử dụng su , bạn sẽ cần phải thiết lập một mật khẩu chủ ( passwd root), sau đó tôi khuyên bạn nên thiết lập PermitRootLogin=notrong /etc/ssh/sshd_config.


Cảm ơn rất nhiều vì câu trả lời tuyệt vời - đặc biệt "người nghiện" đã giúp rất nhiều!
vishal.biyani

11

Tôi có thể sai nhưng tôi luôn phải cài đặt trình nền máy chủ trước khi tôi có thể kết nối (Ít nhất là trên máy tính để bàn) ssh được cài đặt theo mặc định nhưng đó chỉ là máy khách

Lệnh này cài đặt máy chủ

sudo apt-get install openssh-server

Bạn có thể thay đổi cổng và dừng đăng nhập root bằng cách chỉnh sửa

/etc/ssh/sshd_config

Điều này đòi hỏi bạn phải khởi động lại dịch vụ mặc dù.

sudo service ssh restart


Đây là một máy chủ ảo (VPS) nên SSH được cài đặt theo mặc định. Đây là giao diện duy nhất của tôi với máy chủ. Và bạn có thể tải lại cấu hình thông qua sudo /etc/init.d/ssh reload, nhưng dù sao thông tin tốt.
Oli

8

Jim sẽ không có quyền truy cập SSH cho đến khi bạn đã đặt mật khẩu. Khi thực thi root:

grep -i "jim" /etc/shadow | awk -F':' '{ print $2 }'

Nếu lệnh này trả về "!" ký tự sau đó đăng nhập bị vô hiệu hóa cho tài khoản này. Thực thi passwd jimvới quyền root sẽ nhắc bạn về một chuỗi mật khẩu mới và được xác nhận, sau đó lệnh grep ở trên sẽ trả về một chuỗi băm đại diện cho mật khẩu cho jim.

Ngoài ra hãy chắc chắn để xác minh rằng jim có vỏ đăng nhập, được đặt mặc định và thư mục chính tồn tại.

Vui lòng lưu ý bài đăng của lekensteyn để biết thông tin về sửa đổi cài đặt máy chủ SSH.


"Nếu lệnh này trả về ký tự"! "Thì đăng nhập bị vô hiệu hóa cho tài khoản này" Lưu ý điều này không có nghĩa là bạn không thể SSH; chỉ có điều bạn không thể làm điều đó bằng mật khẩu (so với khóa công khai của bạn).
bfontaine

3

Trong trường hợp của tôi, tôi đã có một nhóm được phép truy cập và người dùng không phải là một phần của nhóm. Điều này đã giải quyết nó cho tôi.

Sử dụng ví dụ trên với người dùng jimvà giả sử thành viên của nhóm jimlà nhóm duy nhất ( groupslệnh phát hành trong khi đăng nhập như jimđể tìm các nhóm bạn là một phần của). Trong /etc/ssh/sshd_configtập tin của tôi, tôi đã có AllowGroups sshusersmục và do đó cần phải thêm jimvào sshusersnhóm. Dưới đây là cách thực hiện điều này:

usermod -a -G sshusers jim

Thay thế nhóm của bạn và người dùng phù hợp với cấu hình của bạn.


1
bạn nên cải thiện câu trả lời của mình bằng cách tham khảo một nguồn giải thích rõ hơn về ví dụ của bạn hoặc bằng cách thêm thông tin liên quan dựa trên ví dụ của bạn về câu hỏi ban đầu của OP. ví dụ: người dùng được chỉ định jimlà người dùng giả để giúp cung cấp ngữ cảnh. bài viết ở đây giải thích nó tốt.

0

Có thể có một số trường hợp PasswordAuthenticationbị tắt theo mặc định.

Vui lòng kiểm tra /etc/ssh/sshd_configvà đảm bảo rằng PasswordAuthenticationthuộc tính được đặt thành yes.


0

@Lekensteyn Tôi không thể để lại nhận xét cho câu trả lời câu hỏi vì tôi không có tiếng tăm - nhưng tôi đã thử nối thêm

AllowUsers existingUser,newUser

vào tập tin / etc / ssh / sshd_config của tôi và bây giờ tôi không còn có thể ssh với cả Người dùng hiện tại hoặc Người dùng mới.


Tôi hiểu nỗi đau của bạn: DI đã có cùng một vấn đề. Giải pháp: AllowUsers existingUser@* newUser@*
İsmail Atkurt
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.