Menghubungkan ke server Ubuntu melalui SSH secara eksternal

25

Saya baru saja menginstal Ubuntu Server 12.04 (Precise Pangolin) dan bermaksud menggunakannya terutama sebagai file server. Saya benar-benar baru di Linux, jadi ini adalah kurva pembelajaran yang cukup besar. Kemarin saya dapat mengkonfigurasi Putty pada mesin Windows 7 saya menggunakan sepasang kunci SSH sehingga saya dapat mengelola Server Ubuntu dari desktop saya. Ini berfungsi dengan baik asalkan kedua mesin berada di jaringan yang sama.

Dalam kasus laptop saya ( MacBook Air ) mungkin tidak selalu di jaringan yang sama. Apakah mungkin untuk dapat terhubung ke server Ubuntu dari laptop saya melalui SSH ketika berada di jaringan yang berbeda?

Saya telah menginstal daemon avahi sehingga nama host untuk server disiarkan di LAN dan mengkonfigurasi router sehingga selalu akan menetapkan alamat IP yang sama ke server. Selain itu satu-satunya hal yang saya instal di server adalah OpenSSH di mana saya telah menonaktifkan otentikasi kata sandi sehingga Anda hanya dapat terhubung menggunakan pasangan kunci.

Saya pikir saya akan dapat melakukan hal seperti ini dari terminal di laptop saya:

ssh my.external.ip.address [email protected]

Ketika saya mencoba perintah itu saya mendapatkan kesalahan:

ssh: terhubung ke host port my.external.ip.address 22: waktu operasi habis

Saya juga sudah mencoba

ssh my.external.ip.address [email protected]

dan saya mendapatkan pesan kesalahan yang sama seperti sebelumnya. Jadi itu harus memberi Anda gambaran tentang apa yang saya coba lakukan, tetapi apakah ini mungkin, dan jika ya, bagaimana saya melakukannya?

Dengan asumsi saya dapat mengatur koneksi eksternal melalui ssh dari laptop saya, ada kemungkinan ISP saya akan mengubah alamat IP eksternal saya yang akan memutuskan koneksi eksternal. Saya ingin dapat terhubung dengan kuat, yaitu, jika ISP saya mengubah alamat IP eksternal saya masih dapat terhubung dari jarak jauh ke server tanpa harus tahu apa alamat IP eksternal baru itu.

Aesir
sumber

Jawaban:

23

Pertama-tama, perintah yang benar adalah: ssh [email protected]

Dan router harus dikonfigurasi untuk meneruskan port SSH 22 ke alamat IP lokal server Anda.

Untuk debugging lebih lanjut:

1) Periksa apakah port 22 (SSH) terbuka di server Anda dan pada router (penerusan port).

2) Periksa apakah server SSH berjalan di server Anda

3) Gunakan ping, ssh -vsaat menghubungkan dan melihat /var/log/auth.loguntuk debug masalah koneksi lebih lanjut

1) Di router Anda: ikuti instruksi khusus router

Di server Anda: sudo ufw status(kecuali jika Anda menggunakan utilitas konfigurasi firewall lain) atau sudo iptables -L(metode umum, tetapi keluaran kompleks)

Untuk membuka port 22: sudo ufw allow 22

cf https://help.ubuntu.com/12.04/serverguide/firewall.html

2) Periksa apakah sudah terpasang: dpkg -l openssh-server

Periksa apakah sedang berjalan: service ssh statusataups aux | grep sshd

3) Pada klien yang terhubung:

Di server:

  • sudo less /var/log/auth.log

Anda dapat memeriksa log router juga jika perlu.

Inilah pemindai port online: https://www.grc.com/x/ne.dll?bh0bkyd2

Saya pikir Anda dapat menggunakan alat-alat seperti nmap atau lainnya juga, tapi saya belum terbiasa dengan mereka.

Menangani alamat IP eksternal yang berubah:

1) Dapatkan dynDNS atau akun serupa: http://dyn.com/dns/

Daftar penyedia DNS dinamis:

2) Solusi lain, adalah mengatur pekerjaan crontab, yang secara teratur mengirimkan alamat IP eksternal Anda atau memasukkannya ke dalam layanan penyimpanan online seperti dropbox.

Berikut skrip yang digunakan teman saya:

    #!/bin/bash
    # Bash script to get the external IP address
    MYWANIP=$(curl http://mire.ipadsl.net | sed -nr -e 's|^.*<span class="ip">([0-9.]+)</span>.*$|\1| p')
    echo "My IP address is: $MYWANIP"

    IPold=$(cat /home/USER/Dropbox/test.txt)
    echo "Previous IP Address: $IPold"

    if [[ $IPold != $MYWANIP ]] ;
    then
      echo "New IP"
      rm /home/USER/Dropbox/test.txt
      echo $MYWANIP >> /home/USER/Dropbox/test.txt;
      echo $MYWANIP;
    else
      echo "Same IP";
    fi

    # example crontab entry:
    ## m h  dom mon dow   command
    ## */10 * * * * /home/USER/Dropbox/test_ip.sh

Penerusan port router:

1) Pertama, cari tahu alamat IP lokal router Anda dengan menjalankan:

ip route | grep default

Biasanya sekitar 192.168.xx

Cara alternatif dan solusi OS lainnya:

2) Menggunakan komputer apa pun yang terhubung secara lokal ke router, akses IP yang ditemukan sebelumnya, misalnya melalui http://192.168.1.1 . Ini akan memunculkan antarmuka konfigurasi router.

3) Langkah selanjutnya bervariasi tergantung pada router Anda. Inilah cara melakukannya pada router dengan OpenWRT misalnya:

https://newspaint.wordpress.com/2012/08/26/how-to-add-a-port-forward-using-the-web-interface-on-openwrt-10-03-1/

KIAaze
sumber
Terima kasih untuk ini, saya akan menjalankan saran sekarang.
Aesir
Ok semua yang harus saya lakukan adalah meneruskan port 22 pada router saya ke server dan berfungsi, terima kasih banyak. Apakah ada cara saya bisa menyelesaikan bagian kedua dari pertanyaan saya mengenai fakta bahwa alamat IP eksternal saya mungkin berubah? - Baru melihat hasil edit Anda, akan dibaca sekarang.
Aesir
Bisakah Anda menjelaskan bagaimana saya bisa meneruskan port 22 di router saya ke server? Apa artinya? Terima kasih!
xxx222
Tergantung pada router apa yang Anda miliki, tetapi biasanya harus ada port forwarding atau halaman pengaturan firewall di suatu tempat. Berikut ini cara melakukannya pada router dengan OpenWRT: newspaperaint.wordpress.com/2012/08/26/... Sebagian besar router dapat dikonfigurasikan dengan masuk ke 192.168.1.1 atau alamat 192.168.xx serupa dari browser Anda jika Anda aktif jaringan yang sama dengan router.
KIAaze
3

Secara default di Ubuntu (Desktop) SSH tidak diinstal.

Anda dapat menginstalnya dengan perintah berikut di Terminal:

sudo apt-get install openssh-server

Ini harus menginstal dan memulai layanan segera.

kenorb
sumber
2
+1. Ini bekerja sangat baik ketika saya mencobanya. Saya dapat ssh ke mesin Ubuntu segera setelah menjalankan perintah itu (untuk Ubuntu 14.04 (Trusty Tahr), edisi Desktop 64-bit).
Peter Mortensen