Saya ingin mengakses port ssh host linux kantor saya dari rumah. Sayangnya tuan rumah terletak di belakang router NAT. Jadi, alamat IP tidak tersedia untuk umum. Namun ada akses ke host internet lain (Server) yang sayangnya hanya akses non-root. Setelah beberapa saat mencari saya tidak menemukan solusi yang cocok.
Pengaturan berikut:
- Office PC (linux, akses root) di belakang NAT (IP bukan publik) tetapi akses Internet penuh.
- Server PC (linux, tanpa akses root) IP statis dan publik dan akses Internet penuh.
- PC rumah (linux, akses root) di belakang NAT (IP bukan publik) tetapi akses Internet penuh.
Kemungkinan koneksi: Office PC -> Server <- Home PC
Tidak mungkin: PC Kantor <-X- Server -X-> PC Rumah
Baik PC Rumah, maupun Server dapat memulai akses ke PC Office. Tetapi Office PC dan Home PC dapat memulai koneksi ke Server.
Membalikkan SSH tunnel tidak mungkin: Saya mencoba metode yang disebut reverse ssh-tunnel. Sayangnya ini membutuhkan GatewayPorts di Server diatur ke "ya" di / etc / ssh / sshd_config, di mana saya tidak memiliki akses root.
Pada prinsipnya itu harus dimungkinkan:
0) Di Server saya memulai program userspace yang mendengarkan pada 2 port (1 masuk, 1 keluar)
1) Di PC kantor saya, saya menjalankan program lain yang membuat koneksi TCP terbuka ke port keluar di server.
2) Dari rumah saya terhubung ke port masuk Server.
Seharusnya ada solusi standar untuk ini di luar sana.
Apa solusi tercepat dan terbersih untuk menyelesaikan ini?
jujur
Jawaban:
Kemudian:
Apa yang dapat Anda lakukan adalah ini: pada langkah 1 meneruskan port jarak jauh dari PC kantor ke server (
12345
digunakan sebagai contoh, port apa pun> 1024 yang harus dilakukan). Sekarang terhubung ke 12345 di server akan menghubungkan Anda ke port 22 di officepc.Pada langkah 2, teruskan port 23456 dari mesin di rumah Anda ke 12345 di server (saat itu diteruskan ke officepc: 22, sebagaimana diatur dalam langkah 1)
Pada langkah 3, Anda terhubung ke port lokal 23456 dengan login PC kantor Anda . Ini diteruskan oleh langkah 2 ke port 12345 di server Anda, dan dengan langkah 1 ke PC kantor Anda.
Perhatikan bahwa saya menggunakan autossh untuk penerusan, karena ini adalah pembungkus ssh yang secara otomatis menghubungkan kembali terowongan jika harus diputus; Namun ssh normal akan berfungsi juga, selama koneksi tidak turun.
Ada kemungkinan kerentanan: siapa pun yang dapat terhubung ke localhost: 12345 di serverpc sekarang dapat terhubung ke officepc: 22, dan mencoba untuk meretas ke dalamnya. (Perhatikan bahwa jika Anda menjalankan server SSH, Anda harus tetap mengamankannya di atas perlindungan dasar yang aktif secara default; Saya sarankan setidaknya menonaktifkan login root dan menonaktifkan otentikasi kata sandi - lihat misalnya ini )
Sunting : Saya telah memverifikasi ini dengan konfigurasi yang sama, dan berfungsi.
GatewayPorts no
hanya memengaruhi porta yang terbuka untuk dunia pada umumnya, bukan terowongan lokal. Inilah port yang diteruskan:Jadi, sejauh menyangkut tumpukan jaringan, itu semua lalu lintas lokal pada antarmuka loopback masing-masing (ditambah koneksi ssh ke serverpc); oleh karena itu,
GatewayPorts
tidak dicentang sama sekali.Akan tetapi, ada arahannya
AllowTcpForwarding
: jika demikianno
, pengaturan ini akan gagal karena tidak ada penerusan yang diizinkan sama sekali, bahkan tidak melintasi antarmuka loopback.Peringatan :
Jika menggunakan autossh dan ssh terbaru, Anda mungkin ingin menggunakan ssh
ServerAliveInterval
danServerAliveCountMax
untuk menjaga terowongan. Autossh memiliki cek bawaan, tetapi ternyata ada beberapa masalah pada Fedora.-M0
menonaktifkannya, dan-oServerAliveInterval=20 -oServerAliveCountMax=3
memeriksa apakah koneksi sudah aktif - mencoba setiap 20 detik, jika gagal 3x berturut-turut, berhenti ssh (dan autossh membuat yang baru):mungkin berguna untuk memulai kembali ssh tunnel jika penerusan gagal, menggunakan
-oExitOnForwardFailure=yes
- jika port sudah terikat, Anda mungkin mendapatkan koneksi SSH yang berfungsi, tetapi tidak ada penerusan terowongan.~/.ssh/config
disarankan menggunakan opsi (dan port), jika tidak, baris perintah terlalu bertele-tele. Sebagai contoh:Kemudian Anda dapat menggunakan hanya alias server:
sumber
GatewayPorts no
membatasi port yang dibuka hanya dapat diakses pada antarmuka loopback; perhatikan bahwa pada langkah 2 Anda meneruskan pada antarmuka loopback (pada kenyataannya, kedua ke depan adalah "hanya localhost"), jadi ini mungkin bekerja (AllowTcpForwarding no
dalam sshd config akan memecahkan ini).GatewayPorts no
; edit jawabannya. Perhatikan bahwa ada arahan lain (sepertiPermitOpen
danAllowTcpForwarding
) yang dapat merusak pengaturan ini: manpagez.com/man/5/sshd_configJika Anda dapat ssh ke server internal dari rumah dan dari server internal ke mesin Linux kantor Anda, maka dari rumah Anda dapat menggunakan ssh
ProxyCommand
untuk memantul secara diam-diam melalui server ke mesin internal melaluinc
(netcat)Kemudian Anda hanya
ssh user@internalpc
dan Anda diam-diam diteruskan melalui mesin server, tidak ada pembukaan port atau terowongan yang diperlukan di kedua ujung.sumber
Instal Robo-TiTO di komputer yang ingin Anda akses SSH dari jarak jauh.
Petunjuk penginstalan berikut sudah usang, karena situs telah dipindahkan. URL baru adalah https://github.com/formigarafa/robotito
sumber
CLIENT_PASSPHRASE = "logmein"
,, dalam plaintext . Itu benar-benar nol keamanan - Anda membuat lubang seukuran truk untuk siapa pun untuk masuk. Kontras dengan otentikasi kunci publik SSH: Saya mengautentikasi melalui saluran aman , menggunakan kredensial yang bahkan tidak pernah terlintas. Siapa yang menjaga keamanan komputer mereka sekarang?Solusi Piskvor bekerja dan bagus. Namun, itu membuat terminal menggantung terbuka dengan shell login menggantung. Tidak terlalu keren.
Saya selalu menggunakan skrip kecil ini yang saya tulis untuk terhubung ke server dan tetap terhubung dengan menjalankannya di cron:
Saya yakin kita bisa memperbaiki solusi Piskvor menggunakan autossh yang lebih elegan di samping mungkin layar terpisah atau menggunakan argumen -NT ssh untuk hanya menjaga koneksi di latar belakang.
sumber
homepc
komputer).Bagi saya, kedengarannya seperti, alih-alih terowongan SSH, Anda harus mencoba VPN: jenis yang berfungsi dengan menggunakan server di luar untuk proxy melalui, seperti Hamachi . Ada software gratis lainnya seperti ini, tetapi Hamachi adalah favorit saya.
sumber
5.0.0.0/8
jaringan benar-benar memiliki alamat IPv4 publik yang ditetapkan, Hamachi dalam masalah (jika Hamachi sedang berjalan, Anda tidak dapat mengakses bagian internet yang agak acak). Juga, Hamachi tidak lagi bebas digunakan.