Một tùy chọn khác là viết một tập lệnh nhỏ để làm cho core.sshCommand
thông minh hơn một chút - kiểm tra xem thư mục làm việc hiện tại có định cấu hình khóa SSH cụ thể hay không và nếu có thì hãy sử dụng nó, nếu không - hãy dựa vào độ phân giải khóa SSH tiêu chuẩn.
Đây là phiên bản đầu tiên của tôi:
#!/bin/bash
key="$(git config ssh.key)"
if [ -n "$key" ]; then
ssh -o IdentitiesOnly=yes -i "$key" "$@"
else
ssh "$@"
fi
Sau đó, thiết lập nó thành lệnh git SSH toàn cục :
chmod 755 ~/.local/bin/git-ssh-command
git config --global core.sshCommand ~/.local/bin/git-ssh-command
( ~/.local/bin
là tiêu chuẩn hiện tại để "đặt tập lệnh người dùng tại đây" trên hệ điều hành SystemD )
Sau khi thiết lập điều này, bạn có thể định cấu hình bất kỳ kho lưu trữ nào để sử dụng khóa SSH cụ thể bằng cách đặt tùy chọn cấu hình ssh.key
:
git config --local ssh.key ~/.ssh/my-non-default-private-key
Thủ thuật tùy chọn bổ sung
- Đặt toàn cầu
ssh.key
có "khóa dự phòng mặc định thành khóa SSH không mặc định" hoặc một cái gì đó.
- Khi git thực thi
core.sshCommand
trong thư mục gốc của kho lưu trữ, tùy chỉnh của bạn git-ssh-command
có thể xem xét điều đó và có một số kinh nghiệm về tên thư mục. Điều này có thể được thực hiện trong else
phần vì vậy heuristics chỉ bắt đầu nếu không có khóa cụ thể ssh.key
.
- Bạn có thể thêm
git remote -v
séc để thêm phỏng đoán dựa trên điều khiển từ xa, như trong tập lệnh của Eike
- Nếu bạn muốn xem điều khiển từ xa của kho lưu trữ nhưng có nhiều điều khiển từ xa cần các khóa khác nhau, bạn có thể thêm
remote="$1:$(sed "s,.* ,,;s,',,g"<<<"$2")"
vào đầu tập lệnh để giải quyết điều khiển từ xa đang được vận hành - và kiểm tra lại điều đó ( $remote
sẽ giống như cột giữa trong git remote -v
đầu ra).