SSH không có mật khẩu với vị trí tệp nhận dạng không mặc định


16

Là một phần của tập lệnh khởi động, tôi phải tự động mở một số cửa sổ gnome-terminal, một trong những thiết bị đầu cuối đó sẽ tự động gửi:

ssh user@192.168.1.3

Hạn chế với điều này là tôi vẫn cần nhập mật khẩu để hoàn thành kết nối SSH.

Những gì tôi muốn làm là cho kịch bản của tôi để bắt đầu lệnh và hoàn thành kết nối. Ở mức độ đó, tôi đã cố gắng làm theo các hướng dẫn như được nêu trong câu trả lời được chấp nhận ở đây .

Từ hệ thống tôi muốn kết nối từ, tôi đã chạy:

ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key

Sau đó nó nhắc tôi nhập cụm mật khẩu. Tôi để trống cái này, vì tôi không chắc nó sẽ dùng để làm gì, vì vậy tôi giả sử cài đặt một cái sẽ yêu cầu mở khóa bằng cụm mật khẩu đã nói mỗi lần tôi sử dụng nó.

Tiếp tục với các hướng dẫn được liên kết ở trên, sau đó tôi chạy và nhận được những điều sau đây:

ssh-copy-id user@IP
ERROR: No identities found

Một tìm kiếm nhanh cho thấy rằng tôi cần chỉ định vị trí của khóa, vì nó không nằm trong vị trí lưu mặc định, vì vậy tôi đã sửa nó:

ssh-copy-id -i /home/user/ssh/keys/server1key.pub user@192.168.1.3

Sau khi hỏi mật khẩu của máy chủ, nó đã thêm khóa thành công. Tuy nhiên, khi cố gắng đăng nhập bằng "ssh user @ IP", tôi vẫn được nhắc nhập mật khẩu.

Theo như tôi biết, tôi đã làm theo các hướng dẫn được liên kết một cách chính xác, vì vậy hoặc tôi đang thiếu một cái gì đó, hoặc có lẽ một cấu hình hiện có đang ngăn tôi làm cho nó hoạt động?

Cả hai hệ thống sử dụng 18.04 và openssh.


Vậy tôi cần xác định vị trí của tệp .pub khi gửi lệnh SSH?
hiigaran

Tôi đã có một chút cách tổ chức các tệp của mình, do đó, các vị trí không mặc định, nhưng các bạn đã giúp đỡ rất nhiều. Cảm ơn. Hãy làm cho nó một câu trả lời tôi có thể chấp nhận.
hiigaran

Câu trả lời:


35

Nó thất bại vì cùng một lý do mà ssh-copy-idlần đầu tiên thất bại - tức là vì bạn đã chọn một vị trí không mặc định cho tệp nhận dạng.

Bạn có thể giải quyết nó theo cùng một cách, bằng cách thêm -i /home/user/ssh/keys/server1keyvào sshlệnh của bạn - lưu ý rằng phía máy khách cần vị trí của tệp khóa riêng .

Từ man ssh

 -i identity_file
         Selects a file from which the identity (private key) for public
         key authentication is read.  The default is ~/.ssh/identity for
         protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa,
         ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for protocol version 2.

Ngoài ra, bạn có thể muốn tạo một ~/.ssh/configmục nhập tệp cho máy chủ lưu trữ dọc theo dòng

Host            somename
Hostname        192.168.1.3
User            user
IdentityFile    /home/user/ssh/keys/server1key

1
Tôi luôn cho rằng tệp cấu hình yêu cầu thụt lề - tôi thấy đó không phải là trường hợp. Trực giác.
nhện của

Bất cứ ai sử dụng OpenSSH đều phải có ~/.ssh/config, nếu không, OpenSSH sử dụng mặc định toàn hệ thống /etc/ssh/ssh_config. Trong trường hợp bất cứ ai thấy nó hữu ích, tôi đã tải lên một ssh_config dựng sẵn lên GitHub của tôi một thời gian trước để làm điểm bắt đầu cho những người dùng có thể không có thời gian để đọc trang man ssh_config
JW0914

@ JW0914 chỉ đúng một nửa: các giá trị riêng lẻ ~/.ssh/configsẽ ghi đè lên toàn cầu ssh_config, nhưng chỉ cần có tệp sẽ không vô hiệu hóa cấu hình toàn hệ thống.
Sebastian Stark

@SebastianStark Có lẽ bạn đã đọc sai nhận xét của tôi, vì tôi chưa bao giờ nói rằng nó sẽ vô hiệu hóa cấu hình toàn hệ thống. Những gì tôi đã nêu là thực tế chính xác 100%.
JW0914

2

Một lý do khác ssh-copy-idkhông thành công là khóa chưa được thêm vào tác nhân SSH.

Đầu tiên, kiểm tra và bắt đầu nếu ssh-agentđang chạy:

eval "$(ssh-agent -s)"

Nếu bạn nhận được ID quá trình, bạn có thể thêm khóa của mình:

ssh-add -k /home/user/ssh/keys/server1key

Với -kbạn thêm chìa khóa vào móc khóa.

Kiểm tra nếu các phím được thêm bằng:

ssh-add -l

ssh-copy-id nên làm việc bây giờ


-1

Hy vọng điều này sẽ làm việc cho bạn .. "sshpass -p yourpassword" nó sẽ tự động đăng nhập vào máy chủ từ xa.

[root @ localhost .ssh] # sshpass -p password123 ssh -l root localhost


-1

Chỉ cần thực hiện 2 lệnh:

ssh-keygen
ssh-copy-id

Câu trả lời dài:

user@ip:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): temp_file
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in stemp.
Your public key has been saved in stemp.pub.
The key fingerprint is:
SHA256:5**M user@ip
The key's randomart image is:
+---[RSA 2048]----+
|  ...            |
| ...             |
| ..              |
| ..+.    o .     |
|                 |
|    B            |
|                 |
|=      *         |
|=+   o .         |
+----[SHA256]-----+

Và sau đó:

user@ip:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub ipDestination -p portDest
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.