Làm thế nào để ssh đến máy chủ từ xa bằng khóa riêng?


77

Tôi có hai máy chủ. Cả hai máy chủ đều nằm trong CentOS 5.6. Tôi muốn SSH từ Máy chủ 1 đến Máy chủ 2 bằng khóa riêng tôi có (Khóa riêng OpenSSH SSH-2).

Tôi không biết làm thế nào để làm điều đó hơn unix. Nhưng những gì tôi đã làm trên windows bằng Putty là cung cấp khóa riêng OpenSSH của mình cho putty-gen và tạo khóa riêng ở định dạng PPK.

Tuy nhiên, tôi sẽ tạo một tập lệnh bash từ máy chủ 1 sẽ thực thi một số lệnh trên máy chủ 2 thông qua SSH.

Làm cách nào để SSH tới Máy chủ 2 bằng tệp khóa riêng của tôi từ Máy chủ 1?


1
Trên nhiều hệ thống Linux và Unix, điều này có thể được thực hiện bằng cách sử dụngssh-copy-id user@machine
Paul Tomblin

Câu trả lời:


66

Bạn cần khóa công khai SSH và bạn sẽ cần khóa riêng ssh của bạn. Khóa có thể được tạo với ssh_keygen. Khóa riêng phải được giữ trên Máy chủ 1 và khóa chung phải được lưu trữ trên Máy chủ 2.

Điều này được mô tả đầy đủ trong trang chủ của openssh, vì vậy tôi sẽ trích dẫn rất nhiều về nó. Bạn nên đọc phần 'Xác thực'. Ngoài ra, hướng dẫn openSSH sẽ thực sự hữu ích: http://www.openssh.org/manual.html

Hãy cẩn thận với ssh vì điều này ảnh hưởng đến bảo mật của máy chủ của bạn.

Từ man ssh:

 ~/.ssh/identity
 ~/.ssh/id_dsa
 ~/.ssh/id_rsa
     Contains the private key for authentication.  These files contain
     sensitive data and should be readable by the user but not acces-
     sible by others (read/write/execute).  ssh will simply ignore a
     private key file if it is accessible by others.  It is possible
     to specify a passphrase when generating the key which will be
     used to encrypt the sensitive part of this file using 3DES.

 ~/.ssh/identity.pub
 ~/.ssh/id_dsa.pub
 ~/.ssh/id_rsa.pub
     Contains the public key for authentication.  These files are not
     sensitive and can (but need not) be readable by anyone.

Điều này có nghĩa là bạn có thể lưu trữ khóa riêng của bạn trong thư mục chính của bạn trong .ssh. Một khả năng khác là báo cho ssh thông qua công -itắc tham số để sử dụng tệp nhận dạng đặc biệt. Cũng từ man ssh:

 -i identity_file
     Selects a file from which the identity (private key) for RSA or
     DSA authentication is read.  The default is ~/.ssh/identity for
     protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro-
     tocol version 2.  Identity files may also be specified on a per-
     host basis in the configuration file.  It is possible to have
     multiple -i options (and multiple identities specified in config-
     uration files).

Đây là cho khóa riêng. Bây giờ bạn cần giới thiệu khóa công khai của mình trên Máy chủ 2. Một lần nữa trích dẫn từ man ssh:

  ~/.ssh/authorized_keys
         Lists the public keys (RSA/DSA) that can be used for logging in
         as this user.  The format of this file is described in the
         sshd(8) manual page.  This file is not highly sensitive, but the
         recommended permissions are read/write for the user, and not
         accessible by others.

Cách dễ nhất để đạt được điều đó là sao chép tệp vào Máy chủ 2 và nối nó vào tệp ủy quyền:

scp -p your_pub_key.pub user@host:
ssh user@host
host$ cat id_dsa.pub >> ~/.ssh/authorized_keys

Việc ủy ​​quyền thông qua khóa chung phải được cho phép đối với ssh daemon, xem man ssh_config. Thông thường điều này có thể được thực hiện bằng cách thêm câu lệnh sau vào tệp cấu hình:

PubkeyAuthentication yes

10
Hi cảm ơn bạn đã nỗ lực nhưng tôi chỉ cần điều này. ssh -i keyfilecảm ơn!
Aivan Monceller

8
Sau khi tạo khóa, cách dễ nhất và được khuyến nghị để cài đặt nó trên máy chủ là ssh-copy-id: ssh-copy-id -i ~/.ssh/foo.id_rsa remote.example.com.
Gilles

5
Thật thú vị khi mọi người quên đề cập rằng bạn cần chạy ssh-addsau khi tạo khóa trên máy tính mà bạn đang kết nối. đó là những gì gây ra đau đầu cho hầu hết mọi người.
Luka

3
LƯU Ý QUAN TRỌNG: Máy khách có thể có nhiều khóa riêng và chọn dựa trên tên tùy ý trong tệp riêng ~ / .ssh / config trong đó Host = đặt tên tùy ý, HostName đặt tên hoặc địa chỉ IP, Port = cổng đích, Người dùng là tên người dùng đích và ItentityFile = trỏ đến tệp khóa riêng. Bộ tính năng này thường bị bỏ qua và là giải pháp cho nhiều vấn đề cấu hình, chẳng hạn như có nhiều cặp khóa va chạm vào không gian tên.
Richard T

1
Khi tôi thử và kết nối với SSH bằng cách sử dụng, $ ssh -i ~/.ssh/id_rsa myuser@ssh.myhost.comtôi gặp lỗi myuser@ssh.myhost.com: Permission denied (publickey).Tôi đã tạo khóa, thêm cục bộ bằng cách sử dụng ssh-addvà thêm dưới dạng khóa ủy quyền trên máy chủ từ xa.
Aaron Franke

21

Tôi đã sử dụng tùy chọn ssh với -i để thêm khóa của bạn vào đây.

Nếu bạn muốn truyền arg1, arg2 bằng tệp .sh, chỉ cần chuyển nó sau tệp .sh và sử dụng khoảng trắng sử dụng để phân tách nó.

ssh -i home/avr/new.pem ar@231.221.54.8 "/var/www/beta/betatolive.sh mmin 30"


1
Đừng quên đặt quyền:chmod 600 home/avr/new.pem
Brian Haak

16

Điều đầu tiên bạn cần làm là đảm bảo rằng bạn đã chạy lệnh keygen để tạo các khóa:

ssh-keygen -t rsa

Sau đó sử dụng lệnh này để đẩy phím đến máy chủ từ xa, sửa đổi nó để khớp với tên máy chủ của bạn.

cat ~/.ssh/id_rsa.pub | ssh user@hostname 'cat >> .ssh/authorized_keys'

6
ssh-copy-id user@hostnamethay vào đó hãy gọi
andrej

7

Nối khóa công khai ( id_[rd]sa.pub) cho máy nguồn của bạn (nơi bạn sshing từ) vào ~/.ssh/authorized_keystệp của máy chủ đích cho tên người dùng bạn muốn ssh vào. Nếu bạn mất khóa công khai, bạn sẽ muốn tạo một khóa mới ssh-keygen. Sử dụng các đối số mặc định cho điều đó sẽ ổn cho hầu hết các mục đích. Nếu bạn cần hướng dẫn chi tiết hơn, có hàng ngàn hướng dẫn bạn có thể google.


4

ssh-copy-id - sử dụng các khóa có sẵn cục bộ để ủy quyền đăng nhập trên một máy từ xa

Sử dụng ssh-copy-idtrên Máy chủ 1, giả sử bạn có cặp khóa (được tạo bằng ssh-keygen):

ssh-copy-id -i ~/.ssh/id_rsa user@server2_hostname

Bây giờ bạn có thể ssh vào Máy chủ 2 bằng ssh bằng khóa riêng

ssh -i ~/.ssh/id_rsa user@server2_hostname

Thật vậy, nếu bạn kiểm tra cat ~/.ssh/authorized_keystrên Máy chủ 2, bạn sẽ thấy khóa chung được gắn cho bạn.

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.