Tôi đã thử nghiệm thiết lập này với máy gốc Linux - mọi thứ đều giống nhau - chỉ bước nhảy đầu tiên có thể sử dụng các khóa từ máy gốc.
Vấn đề ban đầu
Tôi đang cố gắng thiết lập chuyển tiếp tác nhân SSH với nhiều bước nhảy. Máy cục bộ của tôi là Windows, với putty và pagete, tất cả các máy Linux là Debian 7.
Vấn đề là các khóa riêng của tôi, có nguồn gốc từ các cửa sổ, chỉ hoạt động trên bước nhảy đầu tiên. Khóa riêng được thêm vào trên bất kỳ máy đầu tiên hoạt động ở mọi nơi.
Máy hop đầu tiên được gọi là 'vpn1', thứ hai 'www1'. 'vpn1' được kết nối với internet và với mạng nội bộ (10.1.0.1). 'www1' chỉ được kết nối với mạng nội bộ (10.1.0.10). 'vpn1' thêm khóa (enbyted@vpn1.enbyted.org) bằng cách sử dụng 'ssh-add', khóa này hiển thị trong cuộc thi.
Gỡ lỗi
Tôi thấy cả 3 phím trong ssh-add -L
:
ssh-rsa [pubkey-1] git@home.enbyted.org //This is github key originating from Windows
ssh-rsa [pubkey-2] enbyted@home.robotronika.pl //This is SSH key originating from Windows
ssh-rsa [pubkey-3] enbyted@vpn1.enbyted.org //This is SSH key originating from 'vpn1'
Khi tôi cố gắng ssh -v -T git@github.com
từ 'vpn1'
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: git@home.enbyted.org
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Authentication succeeded (publickey).
Khi tôi cố gắng ssh -v -T git@github.com
từ 'www1'
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: git@home.enbyted.org
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: enbyted@home.robotronika.pl
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: enbyted@vpn1.enbyted.org
debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: /home/enbyted/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/enbyted/.ssh/id_dsa
debug1: Trying private key: /home/enbyted/.ssh/id_ecdsa
debug1: Next authentication method: password
Điều tương tự cũng xảy ra với ssh đối với các máy chủ chỉ chấp nhận khóa 'enbyted@home.robotronika.pl'. Nhưng tôi có thể SSH với nhiều bước nhảy như tôi muốn với 'enbyted@vpn1.enbyted.org'. Tất nhiên, các lệnh git cũng vậy.
Cấu hình
Của tôi ~/.ssh/config
(giống nhau trên tất cả các máy chủ):
Host 10.1.0.*
ForwardAgent yes
Host *
ForwardAgent no
Của tôi /etc/ssh/sshd_config
(không có ý kiến, giống nhau trên tất cả các máy chủ):
Port <custom-port>
Protocol 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 768
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM yes
Câu hỏi
- Vậy, tại sao vậy?
- Tôi đang làm gì sai?
Ngoài ra, điều này thực sự kỳ lạ, trên 'www1' github cung cấp hai phương thức xác thực - mật khẩu và khóa công khai ... Tôi chắc chắn rằng 'www1' SSH đến github.com đang kết nối với cùng một máy chủ là 'vpn1'.
Cập nhật # 1: thiết lập mạng trên hình ảnh
Xin lưu ý, hình ảnh đó là từ bài viết , nhưng khá nhiều cho thấy thiết lập của tôi.
Vì vậy, tôi có 2 phím trên PC ở nhà và một phím trên ruapehu (vpn1).
Khi tôi SSH đến ruapehu từ PC ở nhà, tôi có thể sử dụng cả ba phím. Nhưng khi tôi thực hiện một ssh khác từ ruapehu (vpn1) đến aoraki (www1) tôi chỉ có thể sử dụng khóa từ ruapehu.
Và khi tôi ssh từ aoraki (www1) đến bất kỳ máy chủ nào bên dưới với bất kỳ số bước nhảy nào chỉ có khóa từ ruapehu hoạt động.
Không có gì nếu PC ở nhà là Windows với Putty + pagete hoặc Linux với ssh-agent.