Trong bài viết trước về hướng dẫn xác thực tự động tài khoản Git, Github và Gitlab, chúng tôi đã giới thiệu cách xác thực tài khoản bằng việc sử dụng SSH Keys và cụ thể về việc lưu trữ tệp Private Key id_rsa trong thư mục ~/.ssh trên hệ điều hành Ubuntu. Tuy nhiên, có một tình huống thường gặp là bạn tham gia vào nhiều dự án sử dụng mã nguồn mà chúng đặt ở nhiều vị trí khác nhau hoặc có nhiều tài khoản GitHub và Gitlab khác nhau. Trong trường hợp này, việc duy trì nhiều tệp Private Key có thể trở nên rối rắm, và bạn không thể sao chép chúng đơn giản vào cùng một vị trí.
Dưới đây, chúng tôi sẽ hướng dẫn bạn 5 cách để chỉ định tệp Private Key khi sử dụng các lệnh liên quan đến Git.
1. Sử dụng ssh-agent
VD sau sử dụng ssh-agent để chỉ định file ~/private-key/id_rsa_1 để thực hiện lệnh git clone source từ GitHub
ssh-agent sh -c 'ssh-add ~/private-key/id_rsa_1; git clone git@github.com:<username>/vinascript.com.git'
2. Sử dụng GIT_SSH_COMMAND
Từ Git version 2.3.0, bạn có thể sử dụng biên môi trường GIT_SSH_COMMAND để chỉ định file Private Key
GIT_SSH_COMMAND='ssh -i ~/private-key/id_rsa_2 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' git clone git@github.com:<username>/vinascript.com.git
3. Sử dụng GIT_SSH
Cách sử dụng tương tự GIT_SSH_COMMAND
echo 'ssh -i ~/private-key/id_rsa_3 -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no $*' > ssh chmod +x ssh GIT_TRACE=1 GIT_SSH='./ssh' git clone git@github.com:<username>/vinasupport.com.git
4. Cấu hình file ~/.ssh/config
Sửa file ~/.ssh/config và thêm nội dung như bên dưới
Host github.com User <username> Hostname github.com IdentityFile ~/private-key/id_rsa_4
5. Cấu hình core.sshCommand
Từ Git version 2.10.0, bạn có thể sử dụng lệnh git config để chỉ định file Private Key
git config core.sshCommand "ssh -i ~/private_key/id_rsa_5 -F /dev/null" git clone git@github.com:<username>/vinascript.com.git