Câu trả lời:
Đối với mỗi người dùng: họ nên tạo (trên máy cục bộ) bằng cách sử dụng khóa của họ ssh-keygen -t rsa
( rsa
có thể thay thế bằng dsa
hoặc rsa1
quá, mặc dù các tùy chọn đó không được khuyến nghị). Sau đó, họ cần đưa nội dung của khóa công khai ( id_rsa.pub
) vào ~/.ssh/authorized_keys
máy chủ đang đăng nhập.
Tôi thực sự thích ssh-copy-id , một tập lệnh được tìm thấy trên * nix theo mặc định (có thể được đặt trên Mac OS X một cách dễ dàng) cũng tự động làm điều này cho bạn. Từ trang người đàn ông:
ssh-copy-id là một tập lệnh sử dụng ssh để đăng nhập vào một máy từ xa (có lẽ sử dụng mật khẩu đăng nhập, vì vậy nên xác thực mật khẩu, trừ khi bạn đã sử dụng thông minh nhiều danh tính)
Nó cũng thay đổi các quyền của nhà người dùng từ xa, ~ / .ssh và ~ / .ssh / ủy quyền để xóa khả năng ghi của nhóm (điều này sẽ ngăn bạn đăng nhập, nếu sshd từ xa có StrictModes được đặt trong cấu hình của nó).
Nếu tùy chọn -i được cung cấp thì tệp nhận dạng (mặc định là ~ / .ssh / id.pub) được sử dụng, bất kể có bất kỳ khóa nào trong tác nhân ssh của bạn hay không.
Hum, đừng hiểu. Đơn giản chỉ cần tạo một chìa khóa và bắt đầu. :) HOWTO Ngoài ra, bạn có thể cấm đăng nhập qua mật khẩu. Trong ví dụ / etc / ssh / sshd_config:
PasswordAuthentication no
Điều này khá đơn giản để thực hiện - có một hướng dẫn đơn giản được tìm thấy ở đây .
Những điểm chính là:
ssh-keygen
trên máy của bạn. Điều này sẽ tạo khóa công khai và riêng tư cho bạn.~/.ssh/id_rsa.pub
) vào ~/.ssh/authorized_keys
trên máy từ xa.Điều quan trọng cần nhớ là điều này sẽ cung cấp cho bất kỳ ai có quyền truy cập vào khóa riêng trên máy của bạn cùng quyền truy cập vào máy từ xa, vì vậy khi tạo cặp khóa, bạn có thể chọn nhập mật khẩu tại đây để bảo mật hơn.
Đối với người dùng Windows để thiết lập putty
Để tóm tắt những gì người khác đã nói, việc thiết lập các khóa SSH rất dễ dàng và vô giá.
Trên máy mà bạn sẽ SSH từ bạn cần để tạo cặp khóa của bạn:
claudius:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dinomite/.ssh/id_rsa): <ENTER>
Enter passphrase (empty for no passphrase): <PASSPHRASE>
Enter same passphrase again: <PASSPHRASE>
Your identification has been saved in /home/dinomite/.ssh/id_rsa.
Your public key has been saved in /home/dinomite/.ssh/id_rsa.pub.
The key fingerprint is:
a3:93:8c:27:15:67:fa:9f:5d:42:3a:bb:9d:db:93:db dinomite@claudius
Chỉ cần nhấn enter khi được ghi chú và nhập cụm mật khẩu khi được nhắc - lý tưởng là khác với mật khẩu đăng nhập thông thường của bạn trên cả máy chủ hiện tại và mật khẩu bạn sẽ SSH.
Tiếp theo, bạn cần phải sao chép chìa khóa mà bạn vừa tạo ra để các máy chủ mà bạn muốn SSH để . Hầu hết các bản phân phối Linux có một công cụ ssh-copy-id
để thực hiện việc này:
claudius:~$ ssh-copy-id caligula.dinomite.net
Now try logging into the machine, with "ssh 'caligula.dinomite.net'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Nếu bản phân phối của bạn không có điều đó, thì bạn nên sao chép khóa vào máy chủ đích và thêm nó vào .ssh/authorized_keys
tệp (có thể có) :
claudius:~$ scp .ssh/id_dsa.pub caligula.dinomite.net:
id_dsa.pub 100% 1119 1.1KB/s 00:00
claudius:~$ ssh caligula.dinomite.net
Last login: Sat May 9 10:32:30 2009 from claudius.csh.rit.edu
Caligula:~$ cat id_dsa.pub >> .ssh/authorized_keys
Cuối cùng, để đạt được lợi ích tối đa từ các khóa SSH, bạn sẽ muốn chạy một tác nhân SSH. Nếu bạn sử dụng môi trường máy tính để bàn (Gnome, KDE, v.v.) thì chỉ cần đăng xuất và đăng nhập lại sẽ bắt đầu một tác nhân SSH cho bạn. Nếu không, bạn có thể thêm dòng sau vào shell của bạn RC file ( .bashrc
, .profile
, vv):
SSHAGENT=/usr/bin/ssh-agent
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "$SSHAGENT" ]; then
eval `$SSHAGENT $SSHAGENTARGS`
trap "kill $SSH_AGENT_PID" 0
fi
Điều này được dự định như một danh sách kiểm tra. Nếu một người theo dõi từng điểm một, các vấn đề phổ biến nhất đối với thông tin đăng nhập không cần mật khẩu sẽ được đề cập. Hầu hết các điểm này được đề cập ở nơi khác; đây là một tập hợp.
Phải có một ~/.ssh
thư mục chmod 700
trên mỗi máy trong tài khoản sẽ khởi tạo hoặc nhận các kết nối.
Khóa (riêng tư) phải được tạo mà không có cụm mật khẩu hoặc có thể khởi động một tác nhân sẽ giữ phiên bản được giải mã của khóa mang cụm mật khẩu cho khách hàng sử dụng. Bắt đầu đại lý với ssh-agent $SHELL
. Đó là $SHELL
phần mà tôi phải mất một thời gian để tìm thấy. Xem trang người đàn ông vì có nhiều chi tiết nếu bạn muốn sử dụng một tác nhân.
Đừng quên rằng các khóa yếu (<2048 bit DSA) mặc định không được chấp nhận bởi các phiên bản gần đây của sshd.
Những điều sau đây phải được thực hiện trên máy phía khách để tạo kết nối.
Khóa riêng của bạn phải được đặt trong ~/.ssh/id_rsa
hoặc ~/.ssh/id_dsa
khi thích hợp. Bạn có thể sử dụng tên khác, nhưng sau đó nó phải được đưa vào tùy chọn -i trên lệnh ssh trên máy gốc để chỉ rõ ràng khóa riêng.
Khóa riêng của bạn phải được chmod 600
.
Kiểm tra xem thư mục nhà của bạn là chmod 700
.
Bây giờ cho phép một máy để nhận được một yêu cầu. Một mô hình phổ biến là nơi quản trị viên cấp cho bạn quyền truy cập vào máy bạn không sở hữu (như lưu trữ web được chia sẻ). Do đó, ý tưởng với ssh là bạn cung cấp khóa công khai của mình cho bất kỳ ai cung cấp cho bạn tài khoản. Đó là lý do tại sao bạn thường không đặt khóa riêng trên máy nhận yêu cầu. Nhưng, nếu bạn muốn máy này cũng thực hiện ssh, thì bạn phải coi nó như một máy gốc với các bước ở trên.
~/.ssh/authorized_keys
trong tài khoản sẽ nhận các kết nối. Bạn cũng có thể đặt các khóa khác được phép kết nối qua tài khoản này tại đây. Một điều đặc biệt khó khăn nếu bạn ở vi và dán khóa vào tệp từ bộ đệm dán trong PuTTY là đây: khóa bắt đầu bằng "ssh-". Nếu bạn không ở chế độ chèn, "s" đầu tiên sẽ đặt vi ở chế độ chèn và phần còn lại của phím sẽ trông ổn. Nhưng bạn sẽ thiếu một "s" ở đầu khóa. Phải mất nhiều ngày để tôi tìm thấy điều đó.chmod 600 ~/.ssh/authorized_keys
. Nó phải được ít nhất là gw.Như những người khác đã nói, người dùng của bạn nên tự tạo bàn phím trên máy khách của họ bằng ssh-keygen và thêm khóa công khai của họ vào ~ / .ssh / ủy quyền trên máy họ muốn đăng nhập.
Để biết thêm thông tin chi tiết, tôi khuyên bạn nên sử dụng SSH, Secure Shell .
Có lời khuyên tốt ở đây, vì vậy tôi sẽ không lặp lại. Khi bạn nhận được một máy chủ được thiết lập để cho phép bạn đăng nhập bằng các khóa, bạn có thể thiết lập các máy chủ khác để thực hiện tương tự với một lớp lót này:
remote=server1 server2 server3 server4
for r in $remote; do echo connecting to $r; tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh $r "tar zxf -; chmod 700 .ssh" ; done
Chỉ cần cd vào thư mục chính của bạn, xác định biến từ xa là một hoặc nhiều tên máy chủ và thực hiện một bó cùng một lúc. Mật khẩu mà nó yêu cầu sẽ là mật khẩu ssh của bạn cho máy chủ từ xa. Tất nhiên bạn có thể sử dụng một phiên bản đơn giản hóa mà không cần vòng lặp for:
tar czf - ./.ssh/id*.pub ./.ssh/authorized_keys2 ./.ssh/config | ssh YOUR_SERVER_NAME_HERE "tar ztvf -; chmod 700 .ssh"
NHỚ: Chỉ sao chép qua các khóa công khai của bạn. Bạn không muốn các khóa riêng tư của mình nằm trên một số máy chủ, nơi bất kỳ ai có sudo đều có thể sao chép chúng và buộc phải sử dụng mật khẩu của bạn.