Lưu cụm mật khẩu khóa SSH bằng móc khóa với tùy chọn --noask


10

Tôi muốn sử dụng móc khóa để quản lý lời nhắc mật khẩu cho các khóa SSH, nhưng chỉ nên 1) hỏi nó khi tôi thực sự sử dụng khóa và 2) lưu nó trong một khoảng thời gian sau đó. Hiện tại tôi có 2 tùy chọn:

  1. $ eval `keychain --eval --agents ssh id_rsa` - điều đó sẽ luôn yêu cầu cụm mật khẩu khi khởi động nhưng sau đó nó sẽ lưu nó.
  2. $ eval `keychain --eval --noask --agents ssh id_rsa` - điều đó sẽ không yêu cầu bất cứ điều gì khi khởi động nhưng sau đó sẽ tiếp tục yêu cầu mật khẩu mỗi lần tôi sẽ sử dụng khóa đó.

Có cách nào để kết hợp lợi thế của các phương pháp này?

Câu trả lời:


9

Các ssh-agentphiên bản gần đây và OpenSSH làm cho nó đơn giản:

  1. Bắt đầu bình thường ssh-agentvới thời gian chờ mặc định cho các phím được thêm (ví dụ 60 phút):

    eval `ssh-agent -t 60m`
    
  2. Cấu hình của bạn sshđể thêm các khóa thực sự được sử dụng cho các đại lý. Thêm một dòng mới vào ~ / .ssh / config`:

    AddKeysToAgent yes
    

    Tính năng này có trong OpenSSH 7.2 mới nhất. Trong các phiên bản trước, bạn cần thêm khóa vào tác nhân theo cách thủ công, nếu thời gian chờ của bạn bị vượt quá, nhưng nó có thể hoàn toàn tự động bằng cách sử dụng chức năng bash, đại loại như thế này:

    ssh() {
      /bin/ssh -o BatchMode=yes $* || \
        ssh-add path/to/the-key && /bin/ssh $*
    }
    

    Ý tưởng: Cố gắng kết nối bằng khóa ở chế độ hàng loạt (sẽ không nhắc cụm mật khẩu và thất bại, nếu khóa không có) và khi thất bại, hãy thêm khóa vào tác nhân và chạy lại lệnh ssh.

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.