it-swarm-vi.com

Làm cách nào để tránh bị hỏi mật khẩu mỗi lần tôi đẩy lên Bitbucket

Tôi đã thiết lập công cụ ssh của mình với sự trợ giúp của hướng dẫn này và nó được sử dụng để hoạt động tốt (tôi có thể chạy hg Push mà không được yêu cầu cụm mật khẩu). Điều gì có thể xảy ra giữa lúc đó và bây giờ, vì tôi vẫn đang sử dụng cùng một thư mục chính.

$ cat .hg/hgrc 
[paths]
default = ssh://[email protected]/tshepang/bloog

$ hg Push
Enter passphrase for key '/home/wena/.ssh/id_rsa': 
pushing to ssh://[email protected]/tshepang/bloog
searching for changes
...
238
tshepang

Bạn cần sử dụng một đại lý ssh. Câu trả lời ngắn: thử

$ ssh-add

trước khi đẩy. Cung cấp mật khẩu của bạn khi được hỏi.

Nếu bạn chưa chạy tác nhân ssh, bạn sẽ nhận được thông báo sau:

Could not open a connection to your authentication agent.

Trong tình huống đó, bạn có thể bắt đầu một và thiết lập môi trường của mình như vậy

eval $(ssh-agent)

Sau đó lặp lại ssh-add chỉ huy.

Thật đáng để xem qua trang web ssh agent .

363
jmtd

Một cách để giải quyết vấn đề này là với ssh-agentssh-add:

$ exec ssh-agent bash
$ ssh-add
Enter passphrase for ~/.ssh/id_rsa: 

Sau đó, cụm mật khẩu được lưu cho phiên hiện tại. và sẽ không được hỏi lại.

48
stefano

Tôi sử dụng Keychain để quản lý khóa ssh. Nó cũng có sẵn trong Debian và có lẽ là Ubuntu với

apt-get install keychain

Đây là trang gói móc khóa Debian . Như bạn có thể thấy, dự án không hoạt động lắm, nhưng hoạt động với tôi. Tôi cũng đã nhận xét một chút về điều này trong một câu trả lời khác ở đây

29
Faheem Mitha

Tạo (hoặc chỉnh sửa nếu nó tồn tại) tệp ~/.ssh/config sau đây:

Host *
    UseKeychain yes
    AddKeysToAgent yes
    IdentityFile ~/.ssh/id_rsa
20
ness-EE

Để thuận tiện, phương pháp tối ưu là sự kết hợp của các câu trả lời của jmtdFaheem .

Sử dụng ssh-agent một mình có nghĩa là một phiên bản mới của ssh-agent cần được tạo cho mọi thiết bị đầu cuối mới mà bạn mở. keychain khi được khởi tạo sẽ yêu cầu cụm mật khẩu cho (các) khóa riêng và lưu trữ nó. Bằng cách đó, khóa riêng của bạn được bảo vệ bằng mật khẩu nhưng bạn sẽ không phải nhập lại mật khẩu nhiều lần.

Arch wiki khuyên bạn nên khởi tạo móc khóa từ /etc/profile.d/ hoặc hồ sơ Shell của bạn, chẳng hạn như .bash_profile hoặc là .bashrc. Điều này có một nhược điểm ở chỗ nó thâm nhập vào móc khóa của bạn ngay khi bạn mở một thiết bị đầu cuối.

Cách tiếp cận linh hoạt hơn là kết hợp keychain với một phiên tmux cụ thể. Vì vậy, trong .bash_profile:

tsess=$(tmux ls 2>&1)

if [[ "${tsess%%:*}" = "secured" ]] && 
   [[ -f $HOME/.keychain/$HOSTNAME-sh ]]; then
    # start keychain
    /usr/bin/keychain -Q -q --nogui ~/.ssh/id_rsa
    . $HOME/.keychain/$HOSTNAME-sh
fi

... và sau đó chỉ là trường hợp bắt đầu phiên tmux được bảo mật và khi được yêu cầu (được khởi chạy từ bàn phím):

#!/bin/bash
PID=$(pgrep tmux)
new="tmux -f $HOME/.tmux/conf new -s secured"
old="tmux attach -t secured -d"

if [[ -z "$SSH_AUTH_SOCK" ]]; then
    eval `ssh-agent`
    trap "kill $SSH_AGENT_PID" 0
fi

if [[ -z "$PID" ]]; then
    urxvtc -title "SSH" -e sh -c "${new}"
else
    urxvtc -title "SSH" -e sh -c "${old}"
fi

ssh-add

Bây giờ, móc khóa của bạn sẽ chỉ được khởi tạo một lần khi bạn bắt đầu phiên tmux cụ thể đó. Miễn là phiên đó vẫn tồn tại, bạn sẽ có thể truy cập các phím ssh đó và Đẩy vào kho từ xa của bạn.

6
jasonwryan

Bạn có thể sử dụng sshpass:

$ Sudo apt-get install sshpass
$ sshpass -p 'password' ssh [email protected]

Bạn chỉ cần thêm sshpass -p yourpassphrase trước khi nối thêm lệnh ssh thông thường của bạn.

0
belka