Thực hiện ssh-add khi ssh / slogin nếu khóa không có trong ssh-agent?


10

Khi tôi đang chạy Gnome, ssh-agent sẽ chạy ssh-add khi slogin / ssh nếu danh tính không được tải. Tôi muốn bắt chước hành vi này trên các shell từ xa, nhưng mọi thứ tôi tìm thấy đều gợi ý chạy ssh-add khi đăng nhập. Tôi chỉ muốn chạy ssh-add nếu sau đó tôi chạy slogin / ssh trên shell từ xa, không phải mỗi lần tôi đăng nhập.

Câu trả lời:


9

Tôi đã tìm ra một giải pháp cho việc này thông qua bash shell.

Thêm vào .bashrc:

check-ssh-add() {
if [ "$DESKTOP_SESSION" == "" ]; then
  if [[ `ssh-add -l` != *id_?sa* ]]; then 
    ssh-add -t 5h  ## 5 hour ssh-agent expiration
  fi
fi
}

slogin() {
check-ssh-add
/usr/bin/slogin $@
}

ssh() {
check-ssh-add
/usr/bin/ssh $@
}

scp() {
check-ssh-add
/usr/bin/scp $@
}

sftp() {
check-ssh-add
/usr/bin/sftp $@
}

7

Thực sự có một cách thậm chí còn đơn giản hơn. ssh-add -ltrả về true (0) nếu có khóa và false (1) nếu không, vì vậy chức năng đầu tiên của bạn có thể được thay thế bằng điều này:

check-ssh-add() {
  if ! ssh-add -l >/dev/null; then
      ssh-add -t 5h
  fi
}

 


1

Thậm chí đơn giản hơn trong phần «đây là phiên tương tác»

ssh-add -l &> /dev/null || ssh-add ~/.ssh/my_id

0

Các phiên bản mới hơn của OpenSSH có thể thêm khóa vào tác nhân trong lần sử dụng đầu tiên, nếu bạn bật AddKeysToAgent yestrong ~/.ssh/config.

(Tôi đã học được điều này từ /superuser//a/1114257/42546 . Tôi không chắc chắn những gì StackOverflow nghi thức thích hợp là để đối phó những câu trả lời trên các trang web StackExchange khác nhau.)

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.