SSH từ Windows sang Linux mà không cần nhập mật khẩu


11

Tôi đang cố gắng sử dụng ssh / scp từ Windows sang Linux mà không phải nhập mật khẩu.

Đây là những gì tôi đã làm và dường như nó không hoạt động:

  • đã tạo khóa công khai và khóa riêng bằng cách sử dụng Trình tạo khóa Putty (trên Windows)
  • đã lưu các tệp như id_rsa.pubid_rsa
  • sao chép chúng vào ~/.ssh
  • đã thêm id_rsa.pub vào hộp Linux trong ~/.ssh/authorized_keys
  • Sau đó tôi cố gắng vào sshhộp Linux từ Windows và tôi vẫn phải nhập mật khẩu

Tui bỏ lỡ điều gì vậy?

Câu trả lời:


10

Bạn phải chạy một tác nhân xác thực trên Windows.

Ví dụ: Pagete , được sử dụng kết hợp với PuTTY (máy khách SSH đồ họa) hoặc Plink (tương đương dòng lệnh của nó).

Bạn sẽ cần thông báo cho Pagete khóa công khai của máy chủ SSH của bạn. Sau đó, nó sẽ giải quyết các yêu cầu xác thực của máy chủ của bạn trong khi chạy trong nền.


1
Lưu ý: (Điều này không rõ ràng đối với tôi.) Khi mở Pagete, nó sẽ mở dưới dạng biểu tượng trong vùng thông báo ở dưới cùng bên phải. Nhấp chuột phải vào nó và nhấp vào Thêm khóa và chọn tệp .ppk được tạo từ puttygen.
badjr

8

1
Vui lòng cố gắng liên kết đến các hướng dẫn dựa trên văn bản thay vì video.
một lập trình viên

Liên kết blog bị hỏng. Hãy thử cái này: tecmint.com/ssh-passwordless-login-with-putty
Kai Wang

2
Liên kết blog bị hỏng là lý do chính xác câu trả lời nên nhiều hơn một liên kết.
Ramhound 11/07/2016

4

Hãy thử Plink (một phần của PuTTY)

 plink -v youruser@yourhost.com -pw yourpw "some linux command"

3
+1 cho một phản hồi chính xác, nhưng tốt hơn hết là bạn nên sử dụng cặp khóa công khai / riêng tư hơn là mật khẩu.
Ted Percival

Mặc dù có thể thay thế, nhưng với plink, bạn không thể có một thiết bị đầu cuối bình thường với nó, ví dụ: các phím mũi tên sẽ không hoạt động cho lịch sử bash
PYK

3

Thiết lập xác thực khóa SSH có thể hơi khó khăn. Có vẻ như bạn đang bao gồm tất cả các căn cứ của bạn. Một điều thường khiến mọi người mất cảnh giác - bạn cần chắc chắn rằng .sshthư mục và nội dung của nó thuộc sở hữu của bạn và chỉ được đọc / ghi rõ ràng bởi bạn.

Đảm bảo chạy nó (trên tất cả các .sshthư mục của bạn ):

chmod -R 700 on ~/.ssh

Nếu điều đó không hiệu quả, hãy bật ghi nhật ký chi tiết bằng cách thêm -vvào sshlệnh của bạn (bạn có thể thêm tối đa ba -vsgiây để có nhiều chi tiết hơn).


2

Tôi cho rằng khóa của bạn không được bảo vệ bằng mật khẩu và những gì bạn nhận được không phải là yêu cầu đối với mật khẩu của khóa.

~ / .ssh không được sử dụng bởi putty ở phía cửa sổ và putty không có cài đặt khóa riêng mặc định. Nếu bạn đang sử dụng máy khách ssh dòng lệnh như cygwin, việc tạo thư mục .ssh khỏi nhà bạn sẽ hoạt động. Từ putty, bạn sẽ cần cấu hình và lưu một phiên.

Từ hộp thoại cấu hình putty, xem kết nối -> dữ liệu và điền vào trường tên người dùng tự động đăng nhập. Sau đó, đi đến kết nối -> ssh -> auth và đặt khóa riêng của bạn một cách chính xác. Sau đó quay lại hộp thoại phiên và lưu phiên này. Bạn cũng có thể đặt tên máy chủ nếu bạn muốn.

Khi bạn có một phiên đã lưu, bạn có thể sử dụng 'putty -load "savesession"'.


Ngoài ra, chmod 700 ~ / .ssh trên máy đích và chmod 644 ~ / .ssh / khóa được ủy quyền. Khi tôi làm theo hướng dẫn của bạn và đặt quyền chính xác, nó bắt đầu hoạt động với tôi.
Blisterpeanuts

2

Tôi đã sử dụng điều này:

c: \> type c:\users\my_name\.ssh\id_rsa.pub | ssh root@172.110.1.171 "cat >> ~/.ssh/authorized_keys"


1

Bạn cũng có thể cần thay đổi quyền trên thư mục chính của bạn:

chmod 755 ~

1

Tôi đã có thể làm điều này chính xác từ Windows 7bằng cách sử dụng -itùy chọn để cung cấp khóa riêng nhận dạng:

ssh -i X: \ win-path \ to \ private-key remoteuser@remote.host.com

ngoại trừ trên máy chủ từ xa, các khóa được ủy quyền của tôi vào /etc/ssh/authorized_keys/remoteuservà vào /etc/ssh/sshd_config, tôi đã thay đổi

#AuthorizedKeysFile     .ssh/authorized_keys
AuthorizedKeysFile      /etc/ssh/authorized_keys/%u

nhưng tôi không biết liệu cấu hình từ xa SSH có quan trọng không.


1

Tất cả bạn cần là các sshcông cụ dòng lệnh đa nền tảng , ssh-keygen& ssh-copy-id. git cho Windows bao gồm chúng.

Hoặc làm điều này từ bashshell cài đặt git :

#By default this puts keyfile pair in ~/.ssh/id_rsa & ~/.ssh/id_rsa.pub :

ssh-keygen.exe -t rsa -b 2048 
ssh-copy-id -i ~/.ssh/id_rsa.pub  $remoteuser@$remotehost

# These two chmod lines are needed on unix platforms, probably not on Windows. 
# typically ssh refuses to use a private key file 
# if it is less-well protected than this:
chmod 700 ~/.ssh
chmod 640 ~/.ssh/id_rsa

Hoặc chạy tập lệnh này trong PowerShell:

Param(
  [Parameter()][string]$keyfile="id_rsa",
  [Parameter()][string]$remotehost,
  [Parameter()][string]$remoteuser
  )
write-host "# ---------------------------------------------------------------------------------#"
write-host "# Create an RSA public/private key pair, and copy the public key to remote server  #"
write-host "#                                                                                  #"
write-host "# /superuser/96051                                            #"
write-host "#         ssh-from-windows-to-linux-without-entering-a-password/1194805#1194805    #"
write-host "#                                                                                  #"
write-host "# ---------------------------------------------------------------------------------#"

write-host "Keyfile pair will be saved at : ~/.ssh/$keyfile, ~/.ssh/$keyfile.pub"
write-host "And copied to $remoteuser@$remotehost"
write-host ""
write-host "You will need a password for the copy operation."
write-host ""

if( -not $(ls ~/.ssh) ) { mkdir ~/.ssh }
$sshdir=$(get-item ~/.ssh/).Fullname

#By default this puts keyfile pair in ~/.ssh/id_rsa & ~/.ssh/id_rsa.pub :
ssh-keygen.exe -t rsa -b 2048 -f "$sshdir$keyfile"

# ssh-copy-id somehow didn't work in Powershell so I called it via bash
bash -c "ssh-copy-id -i ~/.ssh/$keyfile.pub $remoteuser@$remotehost"

# I'm not sure if these two chmod lines work on windows but 
# typically ssh refuses to use a private key file 
# if it is less-well protected than this:
chmod.exe 700 $sshdir
chmod.exe 640 "$sshdir$keyfile"

Sau này, đăng nhập không cần mật khẩu sẽ hoạt động cho cả hai sshscp.

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.