Saya mencari cara sederhana untuk SSH dari mesin lokal saya, A, melalui proxy, B, ke host tujuan, C. Kunci pribadi yang berjalan dengan kunci publik pada C ada di B, dan saya tidak bisa letakkan kunci itu di mesin lokal saya. Ada tips?
Juga, saya ingin dapat melakukan ini menggunakan ~ / .ssh / config.
Terima kasih!
Jawaban:
Skema:
Prasyarat:
A
menjalankan ssh-agent;A
dapat mengaksesB
;B
dapat mengaksesC
;A
Kunci publik ssh hadir diB:~/.ssh/authorized_keys
B
Kunci publik ssh hadir diC:~/.ssh/authorized_keys
Di
~/.ssh/config
atasA
, tambahkanJika kunci pribadi ssh Anda pada B berada di lokasi yang tidak standar, tambahkan jalurnya setelah
ssh-add
.Anda sekarang dapat mengakses
C
dariA
:sumber
ProxyJump B
. sumber: wikibooksnc
?ForwardAgent yes
sebelum ituProxyJump
perintah.Periksa apakah berikut ini berfungsi.
Gunakan perintah berikut jika Anda ingin menggunakan kunci yang tersimpan di B.
Di sini kita menentukan perintah yaitu
ssh -i /path/to/identity_on_B C
untuk dieksekusi pada B bukannya shell login.sumber
Saya sudah menyelesaikan ini sekarang. Inilah solusinya, yang agak langsung. Saya seharusnya melihatnya lebih cepat:
~ / .ssh / config:
'B' adalah server Proksi yang Anda lompati. Ini harus dikonfigurasi seperti biasanya Anda mengkonfigurasi akses ke server.
'C' adalah tuan rumah tujuan. Perlu dikonfigurasikan untuk menggunakan 'B' dalam proses koneksi. File identitas dalam 'C' adalah path ke ssh-key pada 'B'. ProxyCommand menggunakan Netcat untuk membuka koneksi ke 'C' dari 'B'. Netcat, atau nc, harus diinstal pada 'B'.
Semoga ini bisa membantu orang lain.
sumber
Saya menulis sebuah skrip sederhana untuk pada dasarnya daftar kunci ssh saya pada contoh jarak jauh, dan kemudian menambahkan yang saya pilih ke agen ssh lokal saya. Ini tidak terlalu bersih, tetapi memungkinkan saya untuk menyimpan semua kunci di lokasi yang jauh daripada secara lokal.
Berikut skripnya jika ada yang tertarik:
sumber
sumber
Melakukan:
ssh someuser@IP_D
seperti yang
A -> B-> C -> D
di mana A adalah tuan rumah Anda,edit ~ / .ssh / config lokal Anda seperti:
Jawaban ini didasarkan pada jawaban yang dipilih. Saya harus mencari tahu bagaimana berbagai pengguna cocok dengan keseluruhan skenario.
Ini bekerja untuk saya. HTH.
sumber
Jawaban Snowball sangat membantu. Namun, saya membuat beberapa modifikasi pada perintah dan ingin menjelaskan cara kerjanya. Mengingat situasi ini:
Ubah
~/.ssh/config
file Anda dan tambahkan hostB
yang ingin Anda lompati, seperti biasanya Anda mengkonfigurasi host:Kemudian Anda menambahkan host
C
yang Anda ingin berakhir pada:Perhatikan
ProxyCommand
, di mana:ssh -T -q
menunjukkan bahwa ia tidak boleh mengalokasikan pseudo-TTY (-T
) dan diam (-q
);B
, kami menambahkan kunci ke kunci SSHA
melaluissh-add
;-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;nc %h %p
memulainetcat
koneksi ke host terakhir%h
di port%p
(keduanya akan diisi oleh SSH berdasarkan informasi dalam~/.ssh/config
file).Jika Anda perlu menentukan kunci khusus
B
untuk digunakan, Anda dapat melakukannya dengan memodifikasissh-add
bagian:sumber