Apa cara terbaik untuk SSH ke mesin di jaringan lokal?

61

Saya memiliki 2 komputer, satu yang saya gunakan dan satu untuk anak-anak. Saya ingin dapat ssh ke komputer mereka untuk mengontrolnya (suka mematikannya dll) tetapi saya penasaran cara terbaik untuk melakukan ini. Kami berdua berada di rumah yang sama dan berbagi koneksi internet yang sama.

apa jalan terbaik melakukan ini? Dari penelitian, saya membaca untuk menginstal openssh-server pada komputer jarak jauh tetapi saya bingung apa yang harus digunakan untuk nama host ketika mencoba untuk terhubung. Biasanya untuk VPS itu IP eksternal tetapi karena kami berdua berbagi koneksi wifi apakah itu IP perangkat keras? Haruskah kita berinteraksi langsung dengan LAN atau melalui internet?

dukevin
sumber

Jawaban:

58

Lari:

avahi-browse -tl _workstation._tcp

Untuk mendapatkan daftar workstation Ubuntu di jaringan lokal, maka Anda dapat menghubungkannya dengan menjalankan:

ssh <username>@<computer-name>.local
Eric Carvalho
sumber
7
Catatan: untuk avahi-browse, Anda harus menginstal avahi-utilspaket (yang juga akan menarik avahi-daemon, layanan yang menyediakan .local addressability).
Piskvor
2
@Piskvor Poin bagus. Paket ini sudah diinstal secara default di Ubuntu Desktop, tetapi saya tidak tahu tentang rasa lain (kubuntu, lubuntu, dll). Jika tidak diinstal jalankan saja sudo apt-get install avahi-utils.
Eric Carvalho
jadi apakah akan diperlukan untuk men-setup server ssh atau apakah misalnya ubuntu 14.04 menjalankannya secara default?
tobi
1
@tobi SSH server tidak diinstal secara default. Anda harus menginstalnya.
Eric Carvalho
2
daftar tampaknya kosong setelah saya jalankan avahi. Kedua komputer terhubung ke router yang sama
Jose Ospina
15

Anda dapat menggunakan alamat IP untuk ssh ke komputer anak itu. Jika Anda ingin menggunakan nama komputer, edit file / etc / hosts Anda untuk memasukkan nama komputer.

192.168.1.104  dad
192.168.1.105  kids
Ed Manet
sumber
12
Anda perlu menunjukkan bahwa IP harus ditetapkan secara statis ke komputer.
Alaa Ali
3
Anda dapat mengaktifkan sshdengan nama tanpa mengedit file host dengan memberi nama host di ~/.ssh/config: howtogeek.com/75007/…
Nathan Long
@NathanLong - Tip yang bagus! meskipun orang dapat berargumen bahwa itu dalam file hosts memungkinkan seseorang mengakses layanan apa pun (jika diinginkan).
stefgosselin
9

Sebelum melakukan ssh, periksa ssh client dan server. Jika Anda tidak menginstal layanan ini

 sudo apt-get install openssh-client

 sudo apt-get install openssh-server

Jika Anda baru saja melakukannya

 ssh username@ipaddress

 Enter connecting device login password.

Contoh:

 ssh [email protected]

 [email protected]'s password:********

Jika Anda mendapatkan kesalahan seperti: "Izin ditolak, silakan coba lagi."

Silakan periksa dua kali untuk Nama Pengguna dan ip.

PAC
sumber
8

Saya menggunakan file ~ / .ssh / config yang ssh mem-parsing secara otomatis, berikut ini sebuah contoh:

Host *
ControlMaster auto
ControlPath /tmp/%r@%h:%p

KeepAlive yes 
ServerAliveInterval 60
ServerAliveCountMax 10
ControlPersist 1h

Host server1
        User user1
        HostName server1-web.example.org

Host server2
        User user2
        HostName server2-db.example.org
        Compression yes
        IdentityFile /home/user/.ssh/different_key.pem

Perhatikan bahwa Anda dapat menggunakan variabel (sisi klien) apa pun dalam file ini dan mengaturnya secara global atau per server.

Shadok
sumber
Lalu bagaimana cara mengkonfigurasi fasilitas DNS alat gateway Internet rumah untuk mengaitkan server1-web.example.orgdan server2-db.example.orgdengan server masing-masing?
Damian Yerrick
5
  1. Anda dapat ssh langsung ke IP lokal asalkan LAN Anda menggunakan IP statis, misalnya
    ssh [email protected]

  2. Anda dapat mengedit file host di kedua komputer, seperti yang disebutkan oleh Ed Manet dalam jawabannya . Dengan begitu Anda kemudian dapat ssh menggunakan nama host komputer, yaitussh someuser@some_hostname

  3. Anda dapat mengatur server DNS lokal untuk menyelesaikan host LAN Anda. Dengan cara ini Anda dapat ssh menggunakan nama host komputer seperti pada opsi 2 tetapi dengan manfaat tambahan menghindari mengedit setiap file host, dengan mengarahkan server DNS Anda di pengaturan jaringan Ubuntu.

DNSMasq adalah server DNS yang cukup bagus, mudah diatur.
Pilihan lain adalah BIND .

Stef K
sumber
3

Gunakan alamat IP LAN lokal. Pendekatan alternatif mengharuskan beberapa port terbuka ke Internet, untuk memungkinkan Anda login.

Anda juga perlu pemetaan port (di router). Menggunakan alamat IP 'publik' Anda (di router) sebagai target tidak akan terhubung ke salah satu dari dua PC Anda.


Cara paling sederhana adalah dengan menetapkan secara permanen setiap alamat IP (untuk 2 komputer Anda) di router. Kemudian cukup sambungkan ke alamat IP itu.

Jika Anda ingin menjadi pintar (nanti), atur server dan mulai menggunakan layanan DNS lokal untuk menetapkan nama yang bermakna untuk setiap perangkat. Tidak terlalu sepadan dengan masalah hanya untuk 2 PC.

david6
sumber
1
Catatan: banyak router rumah yang layak saat ini akan membaca nama host workstation selama penugasan alamat IP, dan akan mengatasinya untuk DNS lokal. Sayangnya, ini bukan fitur universal dulu.
Piskvor
2

Jika Anda berbagi koneksi internet yang sama, kemungkinan besar Anda berada di belakang router wifi yang sama. Jadi Anda terhubung langsung ke komputer anak-anak Anda:

ssh <IP-address>

atau:

ssh <user-name>@<IP-address>

Jelas ini bekerja lebih baik jika komputer anak-anak memiliki alamat IP statis. Kalau tidak, Anda selalu perlu memeriksa apa IP itu. Sebagian besar router memiliki opsi untuk menetapkan IP statis (selalu sama) untuk perangkat yang dipilih. Beberapa router juga memiliki opsi untuk menetapkan nama host ke perangkat tertentu - maka untuk perangkat apa pun di alamat jaringan yang sama, "anak-anak" akan berarti sama. Jika Anda menetapkan nama host dengan file / etc / hosts, nama host hanya diketahui oleh komputer di mana file host itu berada. Juga yang mengasumsikan bahwa komputer anak-anak memiliki alamat IP statis.

Anda dapat mengatur IP statis ke komputer anak-anak juga di mesin itu, tetapi saya menyarankan pengaturan di mana pengaturan jaringan dilakukan di router. Satu titik kendali - lebih mudah dikelola. Jika ada sesuatu yang tidak jelas, tinggalkan komentar dan saya akan memperluas jawaban saya.

Tanel Mae
sumber
Saya sudah mencoba saran Anda, tetapi mendapat kesalahan: ssh: connect to host xxx.xxx.x.xx port 22: connection refused- apakah ada konfigurasi tambahan yang diperlukan?
lukaszkups
Perlu ada server ssh yang berjalan pada mesin itu dan tidak ada firewall yang memblokirnya dan sebagainya. Bisa jadi ssh telah dikonfigurasikan untuk mengharapkan koneksi pada beberapa port lain dalam hal ini dimungkinkan untuk pengguna -p menandai untuk menggunakan sesuatu yang lain dari port default (22).
Tanel Mae
0

Anda dapat menggunakan alamat IP sebagai ganti nama host atau menetapkan nama host khusus di /etc/hostsfile Anda .

Untuk mendapatkan IP di komputer anak: pada menu jaringan lihat "Informasi Koneksi" atau jalankan ifconfigdi commandline (ini harus dilakukan di komputer anak).

Router wifi Anda menetapkan alamat IP ini dan Anda harus dapat mengonfigurasinya untuk menjaga alamat IP tertentu untuk komputer yang saat itu ditugaskan untuk mereka. (Kalau tidak, IP dapat berubah dari waktu ke waktu).

AmanicA
sumber
0

Anda cukup memberikan nama komputasi penetapan ke mesin anak Anda.
Maka cukup lakukan saja,
ssh MachineName

Saya tidak pernah menggunakan ini, hanya sebuah pemikiran di kepala saya yang saya bagikan.

Gaurav Gandhi
sumber