SSH ke komputer rumah

21

Saya memiliki beberapa mesin di rumah yang ingin saya akses dari sekolah menggunakan SSH dan VNC. Untuk melakukan itu, saya memberi mereka IP statis:

  • 192.168.1.50: Windows
  • 192.168.1.51: Ubuntu
  • 192.168.1.52: Raspberry Pi / Raspbian

Saya tahu SSH menggunakan port 22, jadi saya bisa meneruskan port ini ke 192.168.1.51:22 di router saya, tetapi dengan cara ini saya tidak akan bisa SSH ke Raspberry Pi saya. Apakah ada cara saya bisa mengatur ini untuk dapat mengakses kedua mesin?

acourchesne
sumber
10
Anda dapat menggunakan port ssh yang berbeda. Saya tidak tahu betapa sulitnya di windows, tetapi di linux reall mudah untuk mengubahnya menjadi port non stardard . Dengan cara ini Anda dapat meneruskan port 22 untuk memenangkan mesin (tidak ada perubahan di sana), dan port lain (non-standar) ke RaspberryPi.
bistoco
2
@Melebius, ini sudah tua tetapi masih merupakan bacaan yang bagus, bagian kuncinya bagi saya adalah "Argumen dasar yang saya coba buat: jangan lakukan keamanan-melalui-ketidakjelasan.", Ini tentang kebutuhan dan menyelesaikannya dengan mudah . Yang mengatakan, mungkin dia tidak perlu mengubah port ubuntu atau pi, cukup forward router-port yang berbeda untuk masing-masing port mesin 22.
bistoco
1
@ bistoco Setuju. Namun, OP akan mengekspos akses SSH ke dunia luar dan keamanan harus selalu dipertimbangkan dalam kasus seperti itu. Juga mengatur port yang berbeda pada komputer tidak menyelesaikan masalah OP karena dia perlu mengaktifkan port yang berbeda (= port forwarding) pada router-nya.
Melebius
6
@Melebius Off topic, tapi saya tidak pernah menggunakan 22, hanya karena bot otomatis tidak akan mengetuk server saya 24/7. Itu tidak akan membuat penyerang nyata (atau skrip yang ditulis dengan baik) keluar, tetapi itu mengurangi jumlah entri log saya.
Kaz Wolfe
4
Anda bisa menghubungkan ke salah satu dari mereka (yang dapat diakses publik) dan kemudian terhubung dari yang ini menggunakan alamat lokal ke yang lain.
tkausl

Jawaban:

32

Jika Anda memiliki IPv6, Anda bahkan tidak perlu port forwarding! Cukup dapatkan alamat IPv6 permanen Anda (berdasarkan alamat MAC Anda, jadi dijamin tetap sama kecuali ISP Anda tidak tahu bagaimana IPv6 bekerja) dan gunakan ini untuk menggali. Karena alamat IPv6 Anda menghadap ke depan umum dan memungkinkan dunia untuk mengakses Anda tanpa harus melalui NAT lokal Anda, Anda tidak perlu repot mengaktifkan port-forwarding di mana pun. Ini akan "hanya bekerja."

Perhatikan, bagaimanapun, bahwa IPv6 masih belum benar-benar didukung secara global, dan baik koneksi internet rumah Anda maupun koneksi internet jarak jauh perlu memiliki IPv6 yang berfungsi penuh untuk melakukan ini.

Namun, jika Anda seperti kebanyakan orang dan hanya memiliki IPv4, masih ada jalan! Beberapa router memungkinkan Anda untuk meneruskan port sumber tertentu ke port tujuan tertentu, seperti:

masukkan deskripsi gambar di sini

Dalam contoh ini, port 22diteruskan langsung ke mesin saya sheepdog, sementara port 292diteruskan ke port 22aktifcoyote .

Terakhir, jika router Anda tidak memiliki fitur ini, Anda dapat mengubah port, karena SSH tidak terbatas hanya berjalan di port 22. Anda dapat mengaturnya untuk apa pun yang Anda inginkan (yang tidak digunakan).

Di /etc/ssh/sshd_config(Anda perlu root untuk mengedit, maka sudo nano /etc/ssh/sshd_config), ada baris di bagian atas file:

# What ports, IPs and protocols we listen for
Port 22

Ubah ini menjadi apa pun yang Anda inginkan:

# What ports, IPs and protocols we listen for
Port 2992

Mulai ulang server SSH dengan sudo service ssh restart, dan teruskan port pada router.


Namun, untuk kasus penggunaan ini, saya akan mempertimbangkan apakah terowongan SSH adalah hal yang benar untuk dilakukan. Mungkin Anda harus mengatur server VPN khusus di jaringan rumah Anda? Ini akan memungkinkan Anda untuk mengakses seluruh jaringan rumah Anda dari mana saja, asalkan Anda memiliki kredensial keamanan yang diperlukan oleh VPN. Selain itu, ada biaya overhead yang sedikit lebih rendah dengan VPN; Anda biasanya hanya perlu meneruskan satu port untuk satu mesin.

Kaz Wolfe
sumber
2
Anda bisa menggunakan broker terowongan IPv6 untuk mendapatkan alamat IPv6 jika ISP Anda tidak mendukung IPv6.
André Borie
1
Dengan "fitur ini", maksud Anda meneruskan port ke port yang berbeda?
Liu Siyuan
@LiuSiyuan Yep. Saya tahu ini aneh, tetapi saya telah melihat beberapa router yang tidak bisa mengatasinya. Router ISP lama saya yang disediakan bahkan tidak bisa mencoba.
Kaz Wolfe
Belum mendapatkan bagian IPv6 itu. Haruskah kita berasumsi bahwa semua ISP yang menyediakan alamat IPv6 memberi Anda (konsisten) yang berbeda untuk setiap perangkat di jaringan?
jjmontes
1
@ jjmontes Jika ISP Anda kompeten, Anda akan mendapatkan penuh / 64 (atau mungkin kurang, tetapi masih cukup untuk menetapkan satu ke setiap mesin)
Kaz Wolfe
19

Cara mudah untuk mengatasi masalah ini adalah memetakan port yang berbeda dari router Anda ke port 22 mesin Anda. Misalnya, Anda dapat memiliki pengaturan berikut di router Anda (dengan asumsi router Anda memiliki IP 1.2.3.4)

1. 1.2.3.4:22   --> ubuntu:22
2. 1.2.3.4:8888 --> raspberrypi:22
3. 1.2.3.4:9999 --> windows:22 (or some other port)

Kemudian ketika Anda menggunakan ssh, tentukan port yang ingin Anda gunakan dengan mengetik

$ ssh <username>@<router ip> -p <your port>

Sekarang Anda harus dapat terhubung ke semua mesin Anda.

Liu Siyuan
sumber
11

Jika Anda tahu salah satu komputer Anda selalu menyala, Anda juga memiliki kemungkinan untuk menggunakannya sebagai proxy ssh.

katakanlah Anda memiliki pengaturan nama domain untuk alamat IP eksternal Anda (yaitu myhome.dyndns.com atau apa pun), apa yang akan Anda lakukan adalah terhubung pada satu komputer (misalkan raspberry selalu menyala, dan Anda meneruskan port dari router Anda ke itu), koneksi ssh Anda akan:

school -> (router, transparan di sini) -> raspberry -> ubuntu atau windows

sekarang, di ~ / .ssh / config Anda di sekolah, tambahkan baris:

Host ubuntu 192.168.1.51
    Hostname ubuntu (change to match your setup)
    User myraspberryuser  (change it ;-) )
    IdentityFile ~/.ssh/id_rsa   (The path to your private key, on the school computer, better on an usb key if public computer)
    ForwardAgent yes
    RequestTTY yes
    ProxyCommand ssh -W %h:%p %[email protected]

Untuk menghubungkan kemudian:

ssh-add ~/.ssh/id_rsa # to do only once per session
ssh myuser@ubuntu (login without password)

Mulai sekarang, jika Anda mengetik ssh ubuntu, komputer pertama-tama akan terhubung ke raspberry, dan kemudian memulai sesi ssh ke komputer ubuntu.

Saya sarankan Anda, apa pun port yang Anda pilih untuk meneruskan, untuk menonaktifkan kata sandi di /etc/sshd.conf untuk mengizinkan hanya login melalui kunci ssh. Dengan cara ini, jika Anda mengatur kunci pada raspberry dan di ubuntu, dengan parameter 'ForwardAgent', Anda harus membuka kunci kunci saja dan tidak ada kata sandi yang diperlukan untuk terhubung. Dengan cara ini, bahkan jika bot mencoba masuk di ssh Anda, mereka tidak akan pernah bisa masuk karena Anda melarang masuk dengan kata sandi.

Bonus, ini berfungsi juga dengan scp, scp foo ubuntu: / tmp / foo akan menggunakan pengaturan yang sama tanpa parameter lebih lanjut. Bonus 2, pengaturan ini tidak memerlukan perubahan apa pun di rumah, jika besok Anda dan komputer lain, cukup salin / tempel kode dalam konfigurasi ssh Anda, ubah host dan ip, itu saja, tidak perlu membuka port baru di router

potens
sumber
Apakah ada kelemahan menggunakan mesin sebagai perantara SSH? Katakanlah saya menggunakan Raspberry Pi saya untuk terhubung ke komputer lain di dalam jaringan, apakah kinerjanya memengaruhi tugas?
acourchesne
1
Ya, raspberry dapat membatasi throughput karena harus berfungsi sebagai server dan klien. Jika Anda cukup percaya diri, Anda dapat mencapai hasil yang sama dengan terowongan ssh. Dengan cara ini, raspberry hanya bertindak sebagai server tetapi komputer sekolah Anda harus melakukan dua klien.
potens
4

Saya melakukan ini - saya meninggalkan rpi dan terhubung langsung ke router sepanjang waktu (karena ini yang termurah untuk dijalankan) dan hanya ssh ke dalamnya, lalu bangkit dari itu ke yang lain - tidak pernah membutuhkan banyak perhatian.

Dimungkinkan juga untuk VNC / RDP GUI melalui pipa ssh, agak menyenangkan, atau meneruskan port yang memungkinkan Anda menjelajah ke server di komputer desktop Anda sekaligus menjaganya tetap pribadi.

Alasan saya menambahkan jawaban ini adalah pergi memberi Anda beberapa saran.

1) Gunakan port berbeda dari 22. Anda dapat membiarkannya 22 pada PI, tetapi ubah port yang masuk pada router Anda menjadi lebih dari 10.000 ... Jika tidak, Anda akan mendapatkan lusinan hingga ratusan serangan sehari - dan begitu Anda Dikenal menjalankan host SSH begitu eksploit ditemukan, Anda adalah pemiliknya.

2) Gunakan sertifikat alih-alih nama pengguna / kata sandi - sepenuhnya menonaktifkan login nama pengguna / kata sandi.

3) Jika alamat ip Anda dapat berubah, gunakan layanan jenis dyndns untuk mendapatkan sendiri nama host DNS (saya menggunakan noip, itu gratis dan mereka mendukung klien Linux untuk memperbarui alamat ip Anda - Saya pikir Anda bisa langsung menggunakannya pi sekarang). Masih ada beberapa perusahaan lain yang menawarkan ini secara gratis.

4) Tetap perbarui pi Anda (atau apa pun yang Anda ssh) (sudo apt-get update). Saya percaya ssh sudah cukup diperiksa sekarang, tapi saya juga percaya bahwa dari https ...

Bill K
sumber
3

Meragukan apakah ini lebih cocok sebagai komentar daripada jawaban, tetapi saya akan tetap memposting di sini.

Beberapa hal yang harus Anda pikirkan sebelum melakukan ini:

  1. Anda akan membuka sistem Anda ke internet, jadi sebaiknya Anda memastikannya sudah ditambal dengan baik dan konfigurasi keamanan Anda diperkeras (mis. Jangan izinkan login root dan gunakan pubkeys daripada kata sandi).
  2. IP publik Anda (lihat whatismyip.com) dapat berubah, tergantung pada ISP Anda, itu dapat berubah setiap hari atau hampir tidak pernah. Ini berarti Anda harus menemukan cara untuk mengetahui IP publik Anda. Anda dapat mengunjungi whatismyip.com dari jaringan rumah Anda setiap hari, membuat beberapa aplikasi, atau menggunakan Dynamic DNS (DynDNS) untuk memetakan IP publik Anda yang berubah menjadi nama domain statis.
  3. Jika Anda ingin menggunakan IPv6 untuk mem-bypass semua kerumitan terkait IPv4 dan NATing, Anda memerlukan perangkat, router, ISP, ... untuk berbicara IPv6 juga. Ada beberapa layanan yang dapat membantu Anda ketika ISP Anda tidak mendukung IPv6, tetapi perangkat dan router Anda tetap harus membicarakannya.
  4. Semakin banyak port dan perangkat yang Anda buka di internet, semakin besar area serangan Anda. Saya menyarankan menggunakan kotak lompat di jaringan Anda, dan hanya mengizinkan akses SSH ke perangkat itu dari internet. Kotak-melompat pada dasarnya akan menjadi salah satu sistem yang sangat keras yang Anda port-forward melalui router Anda ke internet. Setelah terhubung ke kotak itu, Anda akan dapat SSH ke jaringan internal Anda melaluinya. Kotak melompat pada dasarnya bisa menjadi Raspberry Pi lain. Saya akan menyarankan menggunakan perangkat khusus, untuk dapat mengeraskannya sebanyak mungkin (antara lain dengan menjalankan layanan sesedikit mungkin).
  5. (4a) Alih-alih memiliki lompat-kotak Anda SSH ke dalam, Anda juga dapat mengatur server VPN yang memungkinkan Anda untuk menelusuri jaringan rumah dari perangkat Anda di sekolah (jika koneksi VPN keluar diizinkan).
BlueCacti
sumber