Bước 1
Hãy chắc chắn rằng đại lý địa phương của bạn đã sẵn sàng
Chỉ vì bạn có thể ssh vào máy chủ pháo đài của mình mà không chỉ định đường dẫn khóa hoặc được nhắc nhập mật khẩu, không có nghĩa là đại lý ssh của bạn đang chạy và giữ khóa của bạn. Một số HĐH hiện đại (ví dụ: OSX) xử lý việc này cho bạn.
Trên máy cục bộ của bạn
$ ssh-add -L
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13== ~/.ssh/mykey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13== ~/.ssh/sharedkey.pem
hình 1
Điều đó có nghĩa là đại lý của bạn đang chạy và có chìa khóa của bạn.
$ ssh-add -L
The agent has no identities.
hình 2
Điều đó có nghĩa là bạn chưa thêm bất kỳ khóa nào vào đại lý của mình. Khắc phục điều đó bằng:
ssh-add ~/.ssh/mykey.pem ~/.ssh/sharedkey.pem
Hình 3
Bước 2
Hãy chắc chắn rằng đại lý từ xa của bạn đã sẵn sàng
SSH vào máy chủ pháo đài của bạn và lặp lại kiểm tra từ fig.1 & fig.2 . Tuy nhiên, lỗi bạn có nhiều khả năng nhận được là:
$ ssh-add -L
Could not open a connection to your authentication agent.
hình 4
Điều đó rất có thể có nghĩa là máy khách SSH của bạn không chuyển tiếp kết nối tác nhân xác thực của bạn.
Bạn có thể buộc điều này bằng -A
cờ (miễn là cấu hình sshd trên máy chủ cho phép, đó là mặc định ).
$ ssh -A bastion.ec2
hình.5
Bước 3
Đảm bảo bạn đang sử dụng đúng phím
Nếu bạn đã thêm khóa vào đại lý, đại lý của bạn đang chuyển tiếp và đại lý từ xa của bạn liệt kê các khóa cục bộ của bạn. Chỉ có hai lý do có khả năng bạn không nhận được kết nối. Hoặc bạn không sử dụng đúng khóa hoặc bạn không sử dụng đúng tên người dùng.
Xuất đối tác công khai vào khóa riêng của bạn:
$ cd
$ cd .ssh
$ ssh-keygen -y -f mykey.pem
ssh-rsa ObahfCbvagGbLbhSbeHfvatEBG13
$ ssh-keygen -y -f sharedkey.pem
ssh-rsa LbhNerWhfgJnnlGbbPyrireEBG13
hình 6
Chúng nên giống như những gì bạn đã thấy từ ssh-add -L
đầu đến ==
cuối.
Bây giờ bằng cách này hay cách khác bạn phải vào hộp bạn không kết nối được và xem nội dung của $HOME/.ssh/authorized_keys
tệp cho người dùng mà bạn đang cố gắng kết nối. Bạn cần đảm bảo khóa công khai mà bạn xuất ra bằng lệnh ở trên nằm trong tệp đó trên một dòng. Bạn không thể tin rằng các sharedkey.pub
khối Bro 2 gửi qua email cho bạn là đúng. Kiểm chứng! Điều này có thể yêu cầu người khác có thể SSH vào như người dùng đó để lấy cho bạn tệp ủy quyền hoặc nhận quyền truy cập root. Nếu bạn đã đi xa đến mức này mà nó vẫn không hoạt động, bạn không thể dùng các phím tắt.
Bước 4
Làm cho nó dễ dàng
Hy vọng rằng các bước trên đã đưa bạn vào. Bây giờ, hãy làm cho cơn đau đầu này biến mất miễn là bạn đang sử dụng máy trạm này.
Cấu hình ssh-client cục bộ của bạn
Host *
# A lot of people put an IdentityFile line in this Host * section.
# Don't do that unless you will use only 1 key everywhere forever.
#IdentityFile id_rsa
Host bastion.ec2
# You want to make sure you always forward your agent to this host.
# But don't forward to untrusted hosts. So don't put it in Host *
ForwardAgent yes
# Go a head and put the IP here in case DNS ever fails you.
# Comment it out if you want. Having it recorded is a good backup.
HostName 172.31.0.1
# You don't want to create a proxy loop later, so be explicit here.
ProxyCommand none
# SSH should try using all keys in your .ssh folder, but if you
# know you want this key, being explicit speeds authentication.
IdentityFile ~/.ssh/mykey.pem
# Connect effortlessly by hostname or IP address
# This assumes that your internal DNS uses the fake TLD ec2
# This assumes that 172.31.0.0 is your C-Class subnet
Host *.ec2 172.31.*
# This command says proxy all ssh connections through bastion as if
# you had done an ssh -A
ProxyCommand ssh -W %h:%p bastion.ec2
ForwardAgent yes
# These next lines are documentation you leave as a love letter to
# your future self when all else fails or you have to help a
# coworker and decide to look at your own config.
# ssh-add ~/.ssh/*.pem
# ssh -At bastion.ecs ssh admin@172.31.18.19
hình 7
Nếu bạn mất không có gì khác xa Hình 7 nó phải được sử dụng hợp lý ProxyCommand
& ForwardAgent
.
Tự động điền .bash_profile của bạn
Bạn không muốn phải làm ssh-add
thủ công mỗi khi đăng nhập vào máy. ~/.bash_profile
là tập lệnh chạy mỗi lần bạn đăng nhập **. Đặt dòng từ hình. 3 trong đó và bạn nên luôn luôn có đại lý của bạn sẵn sàng.
** Đừng nhầm lẫn điều này .bashrc
chạy với mỗi thiết bị đầu cuối [tương tác] mới. Đại lý của bạn tiếp tục chạy ngay cả khi bạn đóng tất cả các phiên cuối. Không cần tải lại chìa khóa của bạn
Thay thế cho việc sử dụng .bash_profile
Tôi cũng đã tạo ra một ý chính có thêm Tác nhân khởi động OSX / macOS . Bạn có thể sử dụng phương pháp đó để bắt đầu ssh-agent
khởi động. Nó là rất dễ dàng để cài đặt:
curl -sSL https://gist.github.com/RichardBronosky/429a8fff2687a16959294bcee336dd2a/raw/install.sh | bash
ForwardAgent yes
với-A
nếu chủ nhà không cho phép nó.