Penerusan port SSH

8

Saya ingin terhubung ke komputer saya (lokal) di belakang NAT melalui server yang dapat diakses publik (publik).

Di lokal:

ssh -g -R 8000:localhost:22 user@public

Lalu di depan umum:

ssh -p 8000 user@public 

Tapi saya mengerti error: Connection refused.

Ketika saya masuk ke server publik, saya dapat memverifikasi bahwa terowongan berfungsi dengan:

ssh -p 8000 localhost

Yang membuka ssh di komputer lokal.

Apakah saya mencurigai ada sesuatu yang salah bahwa server publik harus bertindak sebagai proxy transparan? Atau cara membuatnya bekerja seperti itu.

mito
sumber

Jawaban:

11

Port remote SSH ke depan akan secara default mengikat localhost / loopback untuk tujuan keamanan. Seringkali tidak disukai untuk mengizinkan host lain mengakses port yang diteruskan Anda.

Untuk mengesampingkan perilaku ini, Anda perlu melakukan dua hal:

  • Aktifkan GatewayPortsopsi di server.
  • Tentukan alamat binding, atau *untuk mengikat ke semua alamat, pada klien.

    ssh -R \*:8000:localhost:22 user@public
    

Lepaskan tanda bintang untuk memastikan bahwa shell Anda tidak membesar.

Dan Carley
sumber
0

Ini lebih mirip masalah dengan pengaturan pada komputer remote publik. Secara default openssh sshd (yang saya duga adalah yang digunakan) pengaturan GatewayPorts berubah menjadi no, yang memaksa penerusan port jarak jauh hanya mendengarkan pada localhost.

Solusinya kemudian adalah mengedit / etc / ssh / sshd_config Anda (atau yang setara), mengatur GatewayPort ke yes atau ke klien yang ditentukan. Jika Anda memilih nanti, Anda harus mengubah permintaan terowongan Anda menjadi sesuatu seperti -R *: 8000: localhost: 22 sebagai gantinya.

andol
sumber