Khóa SSH - Vẫn yêu cầu mật khẩu và cụm mật khẩu


495

Tôi đã phần nào 'đưa lên' với Github luôn hỏi tên người dùng và mật khẩu của tôi khi tôi sao chép một kho lưu trữ. Tôi muốn bỏ qua bước này vì nó gây khó chịu trong quy trình làm việc của tôi.

Tôi đã thử thiết lập khóa SSH (mà tôi đã thực hiện thành công) bằng hướng dẫn này. https://help.github.com/articles/generating-ssh-keys và tôi đã thành công.

Vấn đề của tôi là tôi vẫn được hỏi mật khẩu github và cụm mật khẩu khi nhân bản một kho lưu trữ (sử dụng SSH). Sự hiểu biết của tôi là sau khi tôi thiết lập khóa SSH này, tôi sẽ không còn phải làm điều đó nữa.

Tôi không chắc chắn nên hỏi gì, vì vậy tôi sẽ chỉ nêu mục tiêu của mình.

Tôi muốn có thể sao chép các kho lưu trữ mà không cần phải đưa thông tin Github của mình mọi lúc .

Tôi bị thiếu gì với khóa SSH? Nếu bất cứ ai có thể cung cấp một số hướng dẫn hoặc tài nguyên tôi sẽ đánh giá cao nó, bởi vì tôi luôn cảm thấy hơi mất mát khi nói đến xác thực SSH trong GitHub.

Theo hiểu biết của tôi, đây là một lệnh kiểm tra xem mọi thứ có hoạt động tốt không, đây là đầu ra từ bảng điều khiển của tôi:

~ $ ssh -T git@github.com
Saving password to keychain failed
Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa':
Hi MYNAME! You've successfully authenticated, but GitHub does not provide shell access.

Khi tôi nhập mật khẩu của mình, điều đó có nên thất bại trước không? Sau đó, khi tôi nhập mật khẩu của mình, nó sẽ vượt qua.


1
Bạn đang ở hệ điều hành nào? Một máy tính để bàn Linux hiện đại sẽ đề xuất lưu trữ cụm mật khẩu của bạn trong trình quản lý khóa. Tương tự trong Mac OS X. Trong Windows, bạn có thể sử dụng pageant, đây là một phần của putty. Trong tất cả các mục tiêu này đều giống nhau: bạn chỉ nhập cụm mật khẩu một lần sau khi bạn khởi động PC, các tác nhân quản lý chính sẽ chuyển nó sang ssh trong các lần sử dụng tiếp theo cho đến khi bạn khởi động lại.
janos


2
Tôi đến bữa tiệc muộn một chút, nhưng trên tab / nút nhái nhỏ trong github có một liên kết có nội dung "Sử dụng SSH". Bạn muốn làm điều đó. Nó thay đổi liên kết bản sao của bạn thành một cái gì đó như "git @ github: username / project.git". Nếu bạn đã thêm khóa SSH vào github và để nó chạy trên ssh-agent cục bộ, thì bạn sẽ có thể đẩy mà không cần nhập tên người dùng hoặc mật khẩu.
Bếp Logan

Câu trả lời:


201

Nếu bạn làm việc với HTTPscác url, nó sẽ luôn hỏi tên người dùng / mật khẩu của bạn.

Nếu bạn sử dụng đúng SSHkhi nhân bản / cài đặt điều khiển từ xa. Sau đó, hãy chắc chắn rằng bạn có một ssh-agent để nhớ mật khẩu của bạn. Bằng cách đó, bạn sẽ chỉ nhập cụm mật khẩu của mình một lần vào phiên cuối.

Nếu vẫn còn quá khó chịu, thì chỉ cần đặt khóa ssh mà không có cụm mật khẩu.


2
Cảm ơn vì sự trả lời. Tôi đã luôn sử dụng HTTP. Tôi đang cố gắng để đạt được xác thực SSH và nghĩ rằng tôi đã thiết lập nó. Là ssh-agent một cái gì đó bên ngoài git tôi cần cài đặt? Cảm ơn
HelloWorld

1
@ R11G bạn không thể, nếu không mật khẩu sẽ không được bảo mật ... Chỉ cần tạo lại mật khẩu mới.
Simon Boudrias

50
Tôi chỉ muốn lưu ý rằng cụm mật khẩu được sử dụng để mã hóa khóa riêng của bạn, vì vậy nếu bạn không sử dụng cụm mật khẩu thì khóa riêng của bạn sẽ không được mã hóa trên máy của bạn. Nó giống như để lại một mật khẩu trong một tệp văn bản đặt xung quanh máy tính của bạn.

2
Thật buồn cười, các repos HTTPS của tôi không bao giờ yêu cầu mật khẩu và các repos SSH của tôi luôn làm như vậy.
Adam

33
Xem tài liệu github này để chuyển đổi URL từ xa từ https sang ssh. Để kiểm tra xem URL của điều khiển từ xa là ssh hay https, hãy sử dụng git remote -v. Để chuyển từ https sang ssh:git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
Manavalan Gajapathy

825

Thêm danh tính mà không cần Keychain

Có thể đôi khi bạn không muốn cụm mật khẩu được lưu trong móc khóa, nhưng không muốn phải nhập lại cụm mật khẩu nhiều lần.

Bạn có thể làm điều đó như thế này:

ssh-add ~/.ssh/id_rsa 

Điều này sẽ yêu cầu bạn nhập cụm mật khẩu, nhập nó và nó sẽ không hỏi lại cho đến khi bạn khởi động lại.

Thêm danh tính bằng cách sử dụng Keychain

Như @dennis chỉ ra trong các nhận xét, để duy trì cụm mật khẩu thông qua khởi động lại bằng cách lưu nó vào móc khóa của bạn, bạn có thể sử dụng -Ktùy chọn ( -kcho Ubuntu) khi thêm danh tính như thế này:

ssh-add -K ~/.ssh/id_rsa

Một lần nữa, điều này sẽ yêu cầu bạn nhập cụm mật khẩu, nhập nó và lần này nó sẽ không bao giờ hỏi lại danh tính này.


178
Lưu ý rằng điều này sẽ không duy trì danh tính khi khởi động lại. Bạn có thể sử dụng -Ktùy chọn để lưu cụm mật khẩu trong móc khóa của mình khi thêm nó, ví dụ:ssh-add -K ~/.ssh/id_rsa
Dennis

29
chữ thường -kcho tôi ... (cơ sở Linux Mint / Ubuntu 14.04) nhưng có! cuối cùng đã sắp xếp thứ này ...
Louis Maddox

8
chỉ cần chạy lệnh "ssh-add" và nhập mật khẩu một lần, dòng lệnh sẽ không nhắc bạn nhập lại mật khẩu.
AVINASH SHRIMALI

14
Bạn không cần bất kỳ đối số; chỉ cần chạy ssh-addsẽ tự động thêm ~/.ssh/id_rsa(trong số các tệp khác). Và không có lý do để gửi đầu ra đến /dev/null; tốt hơn nhiều để xem báo cáo về những gì nó đã làm.
Ted Hopp

6
Bất kỳ ý tưởng tại sao tôi nhận được "Không thể mở kết nối đến đại lý xác thực của bạn."?
dokaspar

252

Trên Mac OSX, bạn có thể thêm khóa riêng của mình vào móc khóa bằng lệnh:

ssh-add -K /path/to/private_key

Nếu khóa riêng của bạn được lưu trữ tại ~ / .ssh và được đặt tên là id_rsa:

ssh-add -K ~/.ssh/id_rsa

Sau đó, bạn sẽ được nhắc nhập mật khẩu, mật khẩu sẽ được lưu trong móc khóa của bạn.

Chỉnh sửa - Xử lý khởi động lại

Để không phải điền mật khẩu của bạn ngay cả sau khi khởi động lại, hãy thêm đoạn sau vào tệp cấu hình ssh của bạn (thường nằm ở ~ / .ssh / config)

Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

7
Trong trường hợp của tôi, nó vẫn nhắc cụm mật khẩu sau khi khởi động lại (macOS Sierrra 10.12.2). Bất kỳ ý tưởng về cách giải quyết này?
inigo333

9
Nevermind, tôi vừa tìm thấy vấn đề. Đó là một lỗi (tính năng?) Từ Mac OS X 10.12, trong đó tác nhân ssh không tự động tải cụm mật khẩu trên móc khóa trong khi khởi động. github.com/lionheart/openradar-mirror/issues/15361
inigo333

2
@ inigo333 thú vị. Tôi chỉ cập nhật và nhận thấy điều này bản thân mình!
Groot

1
@Groot, BTW, thêm "Máy chủ * UseKeychain có" vào "~ / .ssh / config", như được đề xuất trong các câu trả lời khác, khắc phục sự cố.
inigo333

1
Đây phải là câu trả lời được chấp nhận. Đặc biệt là tệp cấu hình trong~/.ssh
Xavi

186

Tôi đã thử tất cả các câu trả lời ở đây và không có câu trả lời nào trong số này có hiệu quả ! Mật khẩu của tôi sẽ không tồn tại giữa các phiên / khởi động lại máy Mac của tôi.

Điều tôi phát hiện ra khi đọc OpenRadar nàycuộc thảo luận trên Twitter nàyApple cố tình thay đổi hành vi của ssh-agent trong macOS 10.12 Sierra để không còn tự động tải các khóa SSH trước đó. Để duy trì hành vi giống như El Cap, tôi đã làm như sau:

  1. ssh-add -K ~/.ssh/id_rsa
    Lưu ý: thay đổi đường dẫn đến vị trí khóa id_rsa của bạn.
  2. ssh-add -A
  3. Tạo (hoặc chỉnh sửa nếu nó tồn tại) ~/.ssh/configtệp sau :

    Host *
      UseKeychain yes
      AddKeysToAgent yes
      IdentityFile ~/.ssh/id_rsa
    

Và bây giờ mật khẩu của tôi được ghi nhớ giữa lần khởi động lại máy Mac của tôi!


2
Đây có thể là một cái gì đó hữu ích để thêm vào các trang tài liệu github hoặc osx . Có thời gian khó khăn nhất để tìm ra lý do tại sao máy Mac của tôi chạy 10.11 và chiếc khác của tôi chạy 10.12 có hành vi khác nhau.
Grr

5
Đã xảy ra với tôi sau khi nâng cấp OSX, cảm ơn (Tôi nghĩ ssh-add -Alà không cần thiết nếu bạn chỉ có một khóa tại ~/.ssh/id_rsa)
Dorian

1
Đây là một câu trả lời cực kỳ hữu ích. Cảm ơn, bạn đã làm cho ngày của tôi.
Jan Nash

2
Kể từ tháng 10 năm 2017, câu trả lời này chính xác là những gì bạn đang tìm kiếm nếu bạn đang sử dụng macOS 10.12 trở lên.
lập trình

3
Và điều này hiện đã có trên các tài liệu github: help.github.com/articles/ từ
Todd Giá

35

Bạn có thể xóa cụm mật khẩu cho khóa

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

hoặc bạn có thể chạy

$ ssh-keygen -p

bạn nhận được một dấu nhắc cho keyfile. Theo mặc định, ~/.ssh/id_rsavì vậy hãy nhấn enter

Bạn sẽ được nhắc cho cụm từ hiện tại nhập nó.

Sau đó, sẽ có một lời nhắc cho cụm từ mới, nhấn enter


Điều này phải cao hơn rất nhiều câu trả lời gần giống nhau để thêm cụm mật khẩu vào móc khóa. Tôi đã phải đưa khóa công khai của mình cho quản trị viên và bao gồm cụm mật khẩu trở nên khó chịu khi gõ. Đây là một giải pháp làm sạch khi bạn không có nhiều quyền kiểm soát máy tính của bạn ( -K, -k, -Akhông làm việc cho tôi).
gwg

1
Đây là điều duy nhất làm việc cho tôi trong quá trình khởi động lại, tất cả các lệnh ssh-add -K, -k, v.v. không làm gì cho tôi.
Amalgovinus

28

Chỉ cần chạy lệnh sau:

ssh-add -K

Nó sẽ không bao giờ yêu cầu bạn nhập lại mật khẩu.


3
Điều này hoạt động rất tốt, nhưng tôi hơi lo ngại về việc chạy một lệnh ngẫu nhiên. Tuy nhiên, nếu bạn kiểm tra các tài liệu ssh-addchỉ "thêm nhận dạng khóa riêng vào tác nhân xác thực" và -Ktùy chọn chỉ đơn giản là "Khi thêm danh tính, mỗi cụm mật khẩu cũng sẽ được lưu trong khóa của người dùng."
máy móc

8
Trên thực tế, nó chỉ sửa nó cho đến khi tôi khởi động lại :(
machineghost

5
trong bash shell cho Windows, cờ "-k" phải là chữ thường. Chỉ cần FYI
Fergus

27

Hãy chắc chắn rằng bạn đang sử dụng ssh cho kho lưu trữ của bạn

mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin git@github.com:eMahtab/jenkins-cje-2017.git (fetch) origin git@github.com:eMahtab/jenkins-cje-2017.git (push)

nhập mô tả hình ảnh ở đây

Không sử dụng https, nếu điều khiển từ xa của bạn đang sử dụng https thì nó sẽ tiếp tục hỏi mật khẩu, ngay cả khi bạn đã thêm khóa chung vào Github và thêm khóa riêng vào ssh-agent. Dưới đây sẽ luôn luôn hỏi mật khẩu

mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin https://github.com/eMahtab/jenkins-cje-2017.git (fetch) origin https://github.com/eMahtab/jenkins-cje-2017.git (push)


Có sự khác biệt giữa hai loại URL từ xa là hữu ích cho tôi. Điều này đã giúp tôi về git pullgit push. Tôi đã chuyển url của mình từ loại HTTPS sang loại SSH và nó git pullđã hoạt động - ngừng yêu cầu mật khẩu.
Michael R

1
Chuyển đổi có thể được thực hiện với lệnh này:git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
guido

17

Tôi đã phải thực hiện:

eval `ssh-agent -s`
ssh-add

Lưu ý : Bạn sẽ phải làm điều này một lần nữa sau mỗi lần khởi động lại. Nếu bạn muốn tránh nó, hãy nhập nó vào tệp " .bashrc " của bạn C:\Users\<<USERNAME>>\.bashrctrên windows. Nó có thể bị ẩn, vì vậy hãy chắc chắn rằng bạn có thể xem các tập tin ẩn.

Giải pháp tìm thấy ở đây .


15

Nếu bạn đang sử dụng windows, điều này làm việc cho tôi:

eval `ssh-agent -s`
ssh-add ~/.ssh/*_rsa

Nó sẽ yêu cầu cụm mật khẩu trong lệnh thứ hai, và đó là nó.


1
Khi bạn đăng xuất và đăng nhập lại, bạn phải nhập lại mật khẩu mỗi lần.
đào tạo


11

Bạn cần sử dụng một đại lý ssh.
TL; DR : Mở terminal & thử

ssh-add

trước khi đẩy. Nhập cụm mật khẩu của bạn khi được nhắc.

Kiểm tra câu trả lời StackExchange ban đầu ở đây


6

Gần đây tôi đã nâng cấp lên macOS Mojave và cài đặt một số công cụ thông qua homebrew, có vẻ như đã hoán đổi phiên bản của Apple cho phiên bản ssh-addkhác. Phiên bản mặc định của tôi ssh-add không-Ktùy chọn. Điều này dẫn đến lỗi sau:

# ssh-add: illegal option -- K

Bạn có thể xem phiên bản nào của ssh-addbạn bằng cách chạy which ssh-add.

(Của tôi đã được lưu trữ trong /usr/local/bin/ssh-add)

Để khắc phục điều này, tôi đã phải chỉ chìa khóa cho phiên bản của Apple :

/usr/bin/ssh-add -K ~/.ssh/id_rsa

Git / GitHub hoạt động hoàn hảo sau đó. Để biết thêm thông tin, hãy xem: Lỗi: ssh-add: tùy chọn bất hợp pháp - K


Có vấn đề tương tự trên iMac của tôi với High Sierra 10.13.6 - điều này hiệu quả với tôi. Cảm ơn!
emccracken

Của tôi đã hoạt động tốt và ngẫu nhiên bắt đầu yêu cầu cụm mật khẩu một lần nữa - có thể sau một bản cập nhật gần đây. Cái này đã sửa rồi! Cảm ơn
mc01

5

Đối với Mac OSX Sierra, tôi thấy rằng các bản sửa lỗi được đề xuất trong sự cố github cho Open Radar đã khắc phục sự cố của tôi. Có vẻ như Sierra đã thay đổi hành vi mặc định (tôi bắt đầu gặp vấn đề này sau khi nâng cấp).

Cái này tôi thấy đặc biệt hữu ích: https://github.com/lionheart/openradar-mirror/issues/15361#issuecomment-249059061

ssh-add -A 

Điều này dẫn đến danh tính của tôi được thêm vào đại lý, sau khi tôi chạy

ssh-add -K {/path/to/key}

Tóm lại, trong OSX.12:

ssh-add -K {/path/to/key}
ssh-add -A 

nên dẫn đến:

Identity added: {/path/to/file} ({/path/to/file})

EDIT: Tôi nhận thấy lần sau khi tôi thực hiện khởi động lại đầy đủ (hay còn gọi là tác nhân dừng và khởi động lại), điều này không còn hoạt động nữa. Giải pháp đầy đủ hơn là những gì @ChrisJF đã đề cập ở trên: tạo một ~/.ssh/configtệp. Đây là đầu ra của tôi:

$ cat ~/.ssh/config
Host *
  UseKeychain yes
  AddKeysToAgent yes
  IdentityFile ~/.ssh/id_rsa

Bạn có thể thêm bao nhiêu IdentityFilemục bạn cần, nhưng đây là thiết lập mặc định. Đây là câu trả lời "xu hướng" trên liên kết openradar ở trên, ATM.


Một chỉnh sửa đã giải quyết vấn đề của tôi. MacOS Mojave 10.14.3
Jose

4

Đã làm việc trong LinuxMint / Ubuntu

Làm các bước sau

Bước 1:

Tập tin Goto => /.ssh/config

Lưu các dòng dưới đây vào tập tin

Host bitbucket.org
    HostName bitbucket.org
    User git
    IdentityFile /home/apple/myssh-privatekey
    AddKeysToAgent yes

Đừng quên thêm dòng này AddKeysToAgent có

Bước 2:

Mở terminal và thêm keyset vào ssh-add

$ ssh-add -k /home/apple/myssh-privatekey

cung cấp cụm mật khẩu.


3

Tôi đã đặt một cụm mật khẩu nhưng vì một số lý do, nó sẽ không nhận ra nó nữa. Vì vậy, tôi chỉ cần thêm tập tin nhận dạng vào móc khóa của mình một lần nữa bằng cách sử dụng ssh-add -Kvà nó đã ngừng hỏi mật khẩu của tôi.


cái này chỉ tải khóa chứ không phải chứng chỉ
numediaweb

3

Đây là những gì làm việc cho tôi:

git config --global core.sshCommand "'C:\Windows\System32\OpenSSH\ssh.exe'"

2

Vấn đề dường như là do bạn đang nhân bản từ HTTPS chứ không phải SSH. Tôi đã thử tất cả các giải pháp khác ở đây nhưng vẫn gặp vấn đề. Điều này đã làm điều đó cho tôi.

Sử dụng osxkeychain helpernhư vậy:

  1. Tìm hiểu nếu bạn đã cài đặt nó.

    git credential-osxkeychain

  2. Nếu nó chưa được cài đặt, bạn sẽ được nhắc tải xuống dưới dạng một phần của Công cụ dòng lệnh Xcode.

  3. Nếu nó được cài đặt, hãy báo cho Git sử osxkeychain helperdụng credential.helpercấu hình chung:

    git config --global credential.helper osxkeychain

Lần tới khi bạn sao chép url HTTPS, bạn sẽ được nhắc nhập tên người dùng / mật khẩu và cấp quyền truy cập vào móc khóa OSX. Sau khi bạn làm điều này lần đầu tiên, nó sẽ được lưu trong móc khóa của bạn và bạn sẽ không phải nhập lại.


2

Câu trả lời này chủ yếu dành cho người dùng windows và cũng có liên quan như nhau nếu bạn gặp khó khăn khi nhân bản với tfs, github hoặc gitlab trên bất kỳ HĐH nào khác.

Chế độ xác thực mặc định khi sử dụng SSH là khóa riêng. Bất cứ khi nào vì một lý do nào đó, ssh-agent lại quay lại xác thực dựa trên tên người dùng và mật khẩu.

Có một số lý do tại sao xác thực dựa trên khóa mặc định có thể đã thất bại. Sau đây là những trường hợp phổ biến nhất:

a) Tác nhân ssh không thể tìm thấy tệp khóa riêng mặc định là id_rsa và không có đường dẫn khóa nào khác được chỉ định rõ ràng.

b) Khóa công khai được lưu trữ trong máy chủ không chính xác.

c) Đường dẫn bạn đang cố sao chép không chính xác.

Trong mọi trường hợp, để khắc phục sự cố trước hết hãy thực hiện lệnh git clone bằng ghi nhật ký chi tiết bằng lệnh:

GIT_TRACE=1 GIT_SSH_COMMAND="ssh -vvv" git clone ssh://pathToYourRepo

Bạn có thể đi qua từng bước trong nhật ký để có được trực giác về vấn đề có thể xảy ra.


Khắc phục sự cố trong trường hợp (a)

  • Đảm bảo rằng bạn có tên khóa mặc định id_rsa trong thư mục .ssh. Bạn có thể đã chỉ định một số tên khóa khác nhau khi tạo khóa bằng lệnh ssh-keygen hoặc có thể không có bất kỳ khóa nào cả).
  • Trong trường hợp bạn muốn chỉ định một khóa khác để xác thực, hãy sử dụng lệnh sau:

    ssh-agent bash -c 'ssh-add ~/.ssh/anotherKey; git clone ssh://pathToYourRepo'
    

Khắc phục sự cố trong trường hợp (b)

  • Đảm bảo không có thêm khoảng trắng khi lưu trữ khóa chung trong máy chủ.

Khắc phục sự cố trong trường hợp (c)

  • Hãy chắc chắn rằng bạn không cố gắng sao chép phiên bản https của đường dẫn kho lưu trữ.

1

Nếu bạn đang sử dụng url ssh cho git, khi được nhắc nhập mật khẩu cho ssh, hãy đặt tên người dùng là " git " và mật khẩu làm mật khẩu đăng nhập hệ thống của bạn


Thay đổi loại URL từ kho lưu trữ từ HTTPSđể SSHgiải quyết vấn đề của tôi. Cảm ơn @MichaelR, bài viết của bạn thực sự hữu ích, mặc dù tôi chưa đọc được gì từ nó: D
Geradlus_RU

1

Tôi muốn thêm câu trả lời cho những người vẫn có thể cần nhập mật khẩu vì họ đã đặt Danh tính duy nhất là có. Điều này có thể gây ra bởi nhiều khóa và tệp nhận dạng, là khóa cho git hoặc máy chủ.

Sau khi tôi đã tạo khóa và sao chép nó vào máy chủ:

ssh-keygen
ssh-copy-id -i ~/.ssh/12gpu_server.pub lerner@192.168.20.160

Tôi thấy nó không hoạt động.

Sau đó tôi đi kiểm tra ~/.ssh/configtập tin, tôi thấy cái này ở phía dưới:

Host *
IdentitiesOnly yes

Sau đó, tôi thêm điều này ở trên:

Host 12gpu
HostName 192.168.20.160
User lerner
IdentityFile ~/.ssh/12gpu_server

Tôi chỉ có thể đăng nhập bằng cách nhập ssh 12gpu.

Sau đó, bạn có thể thêm nhiều khóa ssh bằng tên yêu thích của mình và bạn chỉ cần thêm các cài đặt như bốn dòng trên vào tệp cấu hình.

Máy chủ là tên bạn muốn nhập khi bạn kết nối với máy chủ sau này; các HostName là ip của máy chủ hoặc miền như github.com; Người dùng là tên người dùng bạn đăng nhập vào máy chủ như tên người dùng hoặc git cho github hoặc gitlab; và IdentityFile là tệp nơi bạn lưu trữ khóa bạn đã tạo.


1

Nói chung, đây là các bước để cho phép bạn tạo kết nối từ xa đến máy chủ của mình bằng ssh mà không cần mật khẩu:

  • Tạo một cặp khóa riêng và rsa

    $ ssh-keygen -t rsa -b 4096 -C "your comments"
    
  • Sao chép khóa công khai của bạn và đăng nhập vào máy chủ từ xa của bạn

  • Thêm khóa công khai của bạn vào .ssh / ủy quyền

  • Nếu bạn có nhiều khóa ssh trong máy tính, bạn có thể thêm khóa bằng ssh-add

    $ ssh-add /path/to/private/key

  • Sau đó thử ssh đến máy chủ của bạn

    $ ssh username@your_ip_address

Nguồn: http://diary-of-programmer.blogspot.com/2018/08/tips-how-to-ssh-to-your-digitalocean.html


0

Sử dụng sshurl từ xa do Github cung cấp không https.


OP nói rõ rằng anh ta đang sử dụng SSH thay vì HTTPS.
chậm

0

Nếu bạn đang sử dụng Windows và GIT mà không có công cụ của bên thứ ba và khóa của bạn không được bảo mật bằng mật khẩu / cụm mật khẩu, hãy sử dụng:

  1. Môi trường Variable CHỦ phải được đặt thành hồ sơ người dùng của bạn (ví dụ: C: \ Users \ Laptop)
  2. Chuyển đến thư mục C: \ Users \ Laptop \ .ssh \ và chỉnh sửa tệp "config" (hoặc tạo tệp!) Ví dụ: C: \ Users \ Laptop.ssh ​​\ config (lưu ý: không có. Ở cuối!)
  3. Thêm máy chủ git-server của bạn vào tệp "config" như vậy:

    #Example host entry
    Host myhostname.com
        HostName myhostname.com
        User git
        IdentityFile c:/users/laptop/.ssh/id_rsa.pub
        PasswordAuthentication no
        Port 422
    
  4. Lưu tệp và sao chép kho lưu trữ như thế này:

    git clone ssh: //myhostname.com/git-server/repose/picalc.git

Bạn có thể sử dụng các tham số cấu hình bổ sung cho mục nhập máy chủ tệp "config". Chúng có thể được tìm thấy trong thư mục cài đặt git cục bộ của bạn, ví dụ: " C: \ Program Files \ Git \ etc \ ssh \ ssh_config ". Trích đoạn:

# Host *
#   ForwardAgent no
#   ForwardX11 no
#   RhostsRSAAuthentication no
#   RSAAuthentication yes
#   PasswordAuthentication yes
#   HostbasedAuthentication no
#   GSSAPIAuthentication no
#   GSSAPIDelegateCredentials no
#   BatchMode no
#   CheckHostIP yes
#   AddressFamily any
#   ConnectTimeout 0
#   StrictHostKeyChecking ask
#   IdentityFile ~/.ssh/identity
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519
#   Port 22
#   Protocol 2
#   Cipher 3des
#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc
#   MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
#   EscapeChar ~
#   Tunnel no
#   TunnelDevice any:any
#   PermitLocalCommand no
#   VisualHostKey no
#   ProxyCommand ssh -q -W %h:%p gateway.example.com
#   RekeyLimit 1G 1h

0

Vấn đề tương tự với tôi và giải pháp là:

Xem tài liệu github này để chuyển đổi URL từ xa từ https sang ssh. Để kiểm tra xem URL của điều khiển từ xa là ssh hay https, hãy sử dụng git remote -v. Để chuyển từ https sang ssh: git nguồn gốc set-url từ xa git@github.com: USERNAME / REPOSITORY.git @jeeYem


0

Mobaxterme đã có giao diện UI cho nó

setting > configuration > SSH > SSH Agent > [check] Use internal SSH agent "moboAgent" > add [your id_rsa and restart mobaxterme to set changes]


0

Khóa SSH - Vẫn yêu cầu mật khẩu và cụm mật khẩu

Nếu trên Windows và sử dụng PuTTY làm trình tạo khóa SSH , giải pháp nhanh chóng và dễ dàng này hóa ra là giải pháp làm việc duy nhất cho tôi bằng cách sử dụng dòng lệnh windows đơn giản:

  1. Cài đặt PuTTY của bạn phải đi kèm với một số thực thi, trong số những người khác, pageant.exeplink.exe
  2. Khi tạo khóa SSH bằng PuttyGen, khóa được lưu trữ với .ppkphần mở rộng
  3. Chạy "full\path\to\your\pageant.exe" "full\path\to\your\key.ppk"( phải được trích dẫn). Điều này sẽ thực thi pageantdịch vụ và đăng ký khóa của bạn (sau khi nhập mật khẩu).
  4. Đặt biến môi trường GIT_SSH=full\path\to\plink.exe( không được trích dẫn). Điều này sẽ chuyển hướng các lệnh liên quan đến giao tiếp git ssh đến plinkđó sẽ sử dụng pageantdịch vụ để xác thực mà không yêu cầu lại mật khẩu.

Làm xong!

Lưu ý1: Tài liệu này cảnh báo về một số đặc thù khi làm việc với các GIT_SHHcài đặt biến môi trường. Tôi có thể push, pull, fetchvới bất kỳ số lượng các tham số bổ sung cho các lệnh và mọi thứ hoạt động tốt đối với tôi (mà không cần phải viết một kịch bản mở rộng như đề xuất trong đó).

Lưu ý2: Đường dẫn đến PuTTYinstalation thường trong PATHnên có thể được bỏ qua. Dù sao, tôi thích chỉ định các đường dẫn đầy đủ.

Tự động hóa:

Tệp bó sau có thể được chạy trước khi sử dụng git từ dòng lệnh. Nó minh họa việc sử dụng các cài đặt:

git-init.bat
   @ECHO OFF
   :: Use start since the call is blocking
   START "%ProgramFiles%\PuTTY\pageant.exe" "%HOMEDRIVE%%HOMEPATH%\.ssh\id_ed00000.ppk"
   SET GIT_SSH=%ProgramFiles%\PuTTY\plink.exe

Dù sao, tôi có GIT_SSHbiến được đặt SystemPropertiesAdvanced.exe > Environment variablespageant.exeđược thêm vào dưới dạngRun khóa đăng ký (*).

(*) Các bước để thêm Runkhoá đăng ký>

  1. chạy regedit.exe
  2. Hướng đến HKEY_CURRENT_USER > Software > Microsoft > Windows > CurrentVersion > Run
  3. Làm (menu) Edit > New > String Value
  4. Nhập tên tùy ý (nhưng duy nhất)
  5. Làm (menu) Edit > Modify...(hoặc nhấp đúp chuột)
  6. Nhập đường dẫn kèm theo dấu ngoặc kép đến pageant.exepublic key, ví dụ: "C:\Program Files\PuTTY\pageant.exe" "C:\Users\username\.ssh\id_ed00000.ppk"(lưu ý rằng %ProgramFiles%các biến vv không hoạt động ở đây trừ khi chọn Expandable string valuethay thế String valuetrong bước 3.).


-1

Tôi nghĩ câu trả lời của @sudo bangbang nên được chấp nhận.

Khi tạo khóa ssh, bạn chỉ cần nhấn "Enter" để bỏ qua việc nhập mật khẩu của mình khi nó nhắc bạn định cấu hình mật khẩu.

Điều đó có nghĩa là bạn KHÔNG CẦN mật khẩu khi sử dụng khóa ssh, vì vậy hãy nhớ khi tạo khóa ssh, KHÔNG nhập mật khẩu, chỉ cần nhấn 'Enter' để bỏ qua.


1
Đây là một gợi ý rất xấu. Xem bình luận của @ user456814
Sos
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.