Nếu bạn đang sử dụng SSH và khóa riêng của bạn được mã hóa với một mật khẩu, sau đó bạn vẫn sẽ được nhắc nhở để nhập cụm từ mật khẩu / mật khẩu cho khóa bí mật khi bạn làm các hoạt động mạng với Git như push
, pull
, và fetch
.
Sử dụng ssh-agent để lưu thông tin mật khẩu / mật khẩu khóa riêng
Nếu bạn muốn tránh phải nhập cụm mật khẩu của mình mỗi lần, bạn có thể sử dụng ssh-agent
để lưu trữ thông tin mật khẩu khóa riêng của mình một lần cho mỗi phiên cuối, như tôi giải thích trong câu trả lời của mình về Không thể mở kết nối với tác nhân xác thực của bạn :
$ eval `ssh-agent -s`
$ ssh-add
Trong Windows msysgit Bash, bạn cần đánh giá đầu ra của ssh-agent
, nhưng tôi không chắc liệu bạn có cần phải làm như vậy trong các môi trường phát triển và hệ điều hành khác hay không.
ssh-add
tìm kiếm một khóa riêng trong .ssh
thư mục nhà của bạn được gọi id_rsa
, đó là tên mặc định, nhưng bạn có thể chuyển một filepath cho một khóa có tên khác.
Giết chết đại lý
Khi bạn hoàn thành với phiên cuối, bạn có thể tắt máy ssh-agent
với cờ kill -k
:
$ ssh-agent -k
Như được giải thích trong ssh-agent
hướng dẫn :
-k
Giết tác nhân hiện tại (được đưa ra bởi biến môi trường SSH_AGENT_PID).
Thời gian chờ tùy chọn
Ngoài ra, nó có thể mất một tham số thời gian chờ tùy chọn như vậy:
$ ssh-add -t <timeout>
nơi <timeout>
có định dạng <n>h
cho <n>
giờ, <n>m
trong <n>
vài phút, v.v.
Theo ssh-agent
hướng dẫn :
-t life
Đặt giá trị mặc định cho thời gian nhận dạng tối đa được thêm vào tác nhân. Thời gian tồn tại có thể được chỉ định bằng giây hoặc theo định dạng thời gian được chỉ định trong sshd_config (5) . Thời gian tồn tại được chỉ định cho một danh tính với ssh-add (1) ghi đè giá trị này. Không có tùy chọn này, tuổi thọ tối đa mặc định là mãi mãi.
Xem trang này để biết thêm các định dạng thời gian .
Cảnh báo bảo mật cho người dùng Cygwin
Người dùng Cygwin nên biết về rủi ro bảo mật tiềm ẩn khi sử dụng ssh-agent trong Cygwin :
mọi người nên nhận thức được sự nguy hiểm tiềm tàng của tác nhân ssh theo Cygwin 1 , mặc dù theo một mạng lưới địa phương và portscan từ xa, có vẻ như không thể truy cập được cổng được chỉ định trong / tmp / ssh-foo ...?
[1]: http://www.cygwin.com/ml/cygwin/2001-01/msg00063.html
Và tại đường dẫn được trích dẫn :
Tuy nhiên, lưu ý rằng Unix socket miền Cygwin của là về cơ bản không an toàn và vì vậy tôi mạnh mẽ khuyến khích sử dụng ssh-agent dưới Cygwin.
Khi bạn chạy ssh-agent dưới Cygwin, nó sẽ tạo ổ cắm AF_UNIX trong /tmp/ssh-$USERNAME/
thư mục. Bên dưới ổ cắm Cygwin AF_UNIX được mô phỏng qua ổ cắm AF_INET. Bạn có thể dễ dàng thấy rằng nếu bạn sẽ xem xét /tmp/ssh-$USERNAME/agent-socket-*
tệp qua Notepad. Bạn sẽ thấy một cái gì đó như
!<socket >2080
rồi chạy netstat -a
và bất ngờ! Bạn có một số chương trình nghe cổng 2080. Đó là ssh-agent. Khi ssh nhận được thử thách RSA từ máy chủ, nó đề cập đến tương ứng /tmp/ssh-$USERNAME/agent-socket-*
(theo Cygwin, trong trường hợp của chúng tôi, điều đó có nghĩa là nó sẽ mở kết nối tới localhost:2080
) và yêu cầu ssh-agent xử lý thử thách RSA bằng khóa riêng mà nó có, sau đó nó chỉ đơn giản chuyển phản hồi nhận được từ tác nhân ssh đến máy chủ.
Trong Unix, một kịch bản như vậy hoạt động mà không gặp vấn đề gì, bởi vì nhân Unix kiểm tra các quyền khi chương trình cố gắng truy cập vào ổ cắm AF_UNIX. Tuy nhiên, đối với các ổ cắm AF_INET, các kết nối là ẩn danh (đọc "không an toàn"). Hãy tưởng tượng, bạn có Cyshwin ssh-agent đang chạy. Một tin tặc độc hại có thể di chuyển hộp của bạn, xác định vị trí cổng mở được sử dụng bởi ssh-agent, mở kết nối đến máy chủ SSH của bạn, nhận thử thách RSA từ nó, gửi nó đến đại lý ssh của bạn thông qua một cổng mở mà anh ấy / cô ấy tìm thấy, nhận Phản hồi RSA, gửi nó đến máy chủ SSH và voila, anh ấy / cô ấy đã đăng nhập thành công vào máy chủ của bạn như bạn.