Jawaban Snowball sangat membantu. Namun, saya membuat beberapa modifikasi pada perintah dan ingin menjelaskan cara kerjanya. Mengingat situasi ini:
ssh ssh
A -------> B -------> C
^ ^
using A's using B's
ssh key ssh key
Ubah ~/.ssh/configfile Anda dan tambahkan host Byang ingin Anda lompati, seperti biasanya Anda mengkonfigurasi host:
Host B
User myusername
HostName b.mycompany.com
Kemudian Anda menambahkan host Cyang Anda ingin berakhir pada:
Host C
User myusername
HostName c.intranet.mycompany.com
ProxyCommand ssh -T -q -o 'ForwardAgent yes' B 'ssh-add -t 1 && nc %h %p'
Perhatikan ProxyCommand, di mana:
ssh -T -qmenunjukkan bahwa ia tidak boleh mengalokasikan pseudo-TTY ( -T) dan diam ( -q);
- sekali pada host lompat
B, kami menambahkan kunci ke kunci SSH Amelalui ssh-add;
- yang hanya berfungsi karena kami meneruskan agen SSH menggunakan
-o 'ForwardAgent yes'.
ssh-add -t 1 menunjukkan bahwa saya ingin kunci ditambahkan hanya untuk 1 detik yang diperlukan untuk mengautentikasi ke host terakhir C;
- dan akhirnya,
nc %h %pmemulai netcatkoneksi ke host terakhir %hdi port %p(keduanya akan diisi oleh SSH berdasarkan informasi dalam ~/.ssh/configfile).
Jika Anda perlu menentukan kunci khusus Buntuk digunakan, Anda dapat melakukannya dengan memodifikasi ssh-addbagian:
Host C
User myusername
HostName c.intranet.mycompany.com
ProxyCommand ssh -T -q -o 'ForwardAgent yes' B 'ssh-add -t 1 ~/.ssh/mykey && nc %h %p'