macOS Sierra có vẻ không nhớ SSH key giữa các lần reboot
Em phải chạy lệnh này kể từ khi nâng cấp lên macOS:
ssh-add -K
Lệnh này giúp sửa lỗi mỗi lần reboot nhưng em phải chạy lệnh mỗi lần đăng nhập vào máy tính
Nếu không chạy lệnh trên, key trong ~/.ssh
sẽ bị bỏ qua và em lại bị hỏi mật khẩu server để thiết lập kết nối.
Có bác nào biết tại sao không ạ?
Tớ cũng từng bị như bạn khi định dùng code của Capistrano. Sau đó tớ đã tìm được 2 cách để giải quyết tình trạng này:
Cách 1: Thêm tất cả các keys vào SSH agent
Cách đầu tiên là chạy lệnh ssh-add
với tùy chọn-A
– cho phép thêm nhận diện vào SSH agent bằng cách sử dụng các cụm mật khẩu lưu trữ trong keychain, như sau:
ssh-add -A
Mặc dù hiện tại thì được nhưng lát nữa khởi động lại là không được, nếu không muốn thế, chỉ cần mở ~/.bash_profile
như sau
nano ~/.bash_profile
thêm dòng sau vào phía cuối
ssh-add -A 2>/dev/null;
Vậy là xong, giờ bạn mở Terminal sẽ không vấn đề gì nữ
Cách 2: chỉ thêm vào SSH các key đã có sẵn trong keychain
Mặc dù cách trên hiệu quả trong hầu hết các trường hợp, tớ đã gặp phải 1 vấn đề khi có 6-7 Vagrant box( dùng SSH keys để truy cập) cài đặt trên id_rsa.pub
Cuối cùng, tớ đã bị khóa ngoài server vì sai SSH key quá nhiều lần. SSH s cả các SSH key nhưng không được nên tớ thậm chí không thể có được mật khẩu
Vấn đề là là thêm ssh-add -A
chỉ thêm từng SSH key một khi bạn váo agent mặc dù có trường hợp không cần phải làm thế
Sau đó, tớ đã tìm ra giải pháp cho vấn đề:
Đầu tiên, nếu bạn có SSH key đã thêm vào không cần thiết, mở bằng cách vào ssh-add -l
sau đó xóa trong agent bằng cách
ssh-add -D
Khi đã xong, khởi động lại SSH agent như một trình chạy nền như sau:
eval "$(ssh-agent -s)"
Trong một số trường hợp, bạn có thể đặc biệt thêm ~/.ssh/id_rsa.pub
key vào agent như sau:
ssh-add ~/.ssh/id_rsa.pub
Gõ mật khẩu, ấn Return
Nhưng trong 1 số trường hợp, chỉ cần chạy lệnh sau là key được thêm vào:
ssh-add -K
Nếu được, gõ ssh-add -l
là bạn sẽ thấy chỉ có 1 SSH key được liệt kê ở đó
Bây giờ, mở lại .bash_profile
:
nano ~/.bash_profile
Sau đó thêm dòng sau vào dưới,bình luận hoặc bỏ phiên bản -A
nếu bạn đã có săn
ssh-add -K 2>/dev/null;
Cách trên sẽ cho phép SSH key được thêm vào SSH agent mỗi lần khởi động
Trong macOS Sierra 10.12.2, Apple đã cho thêm 1 tùy chọn
ssh_config
gọi làUseKeychain
để giải quyết vấn đề trên.Thêm phần sau vào file~/.ssh/config
của bạn:Host * AddKeysToAgent yes UseKeychain yes IdentityFile ~/.ssh/id_rsa
Trong phần
ssh_config
man
trên 10.12.2:UseKeychain
Trên macOS, dùng để xác định rõ xem hệ thống có nên tìm kiếm mật khẩu trong keychain của người dùng không khi định sử dụng một mật khẩu đặc biệt. Khi mật khẩu được cung cấp bởi người dùng, tùy chọn này cũng xác định xem mật khẩu có nên được lưu trữ vào keychain một khi nó đã được xác minh là đúng. Các đối số phải là ‘có’ hoặc ‘không’. Mặc định là “không”.