Bagaimana cara saya terhubung ke jaringan wifi WPA menggunakan baris perintah?

Jawaban:

113

iw (daftar / konfigurasi) hanya dapat menangani WEP.

Anda memerlukan wpasupplicantpaket yang menyediakan wpa_supplicantperintah, instal jika perlu melalui sudo apt-get install wpasupplicant.

Anda memasukkan SSID dan kata sandi Anda ke dalam /etc/wpa_supplicant.conf(memerlukan sudo).

Contoh:

network={
    ssid="ssid_name"
    psk="password"
}

Dengan asumsi antarmuka Anda wlan0 Anda dapat terhubung dengan:

sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant.conf -D wext
sudo dhclient wlan0

"wext" adalah driver dan itu akan spesifik untuk setiap kartu; lihat wpa_supplicant -h. Contoh:

hostap (default) Host AP driver (Intersil Prism2/2.5/3). (this can also be used with Linuxant DriverLoader).
hermes Agere Systems Inc. driver (Hermes-I/Hermes-II).
madwifi MADWIFI 802.11 support (Atheros, etc.).
atmel ATMEL AT76C5XXx (USB, PCMCIA).
wext Linux wireless extensions (generic).
ndiswrapper Linux ndiswrapper.
broadcom Broadcom wl.o driver.
ipw Intel ipw2100/2200 driver.
wired wpa_supplicant wired Ethernet driver
roboswitch wpa_supplicant Broadcom switch driver
bsd BSD 802.11 support (Atheros, etc.).
ndis Windows NDIS driver.
Rinzwind
sumber
well thats bagus bahwa iwlist / iwconfig dapat menangani hanya WEP tetapi dalam kasus saya wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && dhclient wlan0 tidak terhubung ke jaringan nirkabel, meskipun secara default NetworkManager menghubungkan saya ke jaringan saya ingin mencoba cara baris perintah apakah ada kesalahan yang saya lakukan?
Pengguna Terdaftar
Perintah terakhir sebenarnya adalah dua perintah, dan Anda harus menjalankan keduanya sebagai root(administrator sistem). Jadi sudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && sudo dhclient wlan0 atau bagi menjadi dua perintah &&.
Anders
Solusi ini memberi saya kesalahan "wlan0: 'ext' driver yang tidak didukung".
Cerin
1
@Rinzwind, Ya ... Melihat halaman manual wpa_supplicant menunjukkan bahwa driver mungkin berbeda, jadi perintah Anda kemungkinan tidak akan berfungsi sebagaimana yang diberikan secara harfiah. Anda harus memilih -D <driver> untuk perangkat keras spesifik Anda. Bagi saya, akhirnya menjadi "nl80211".
Cerin
1
Saya benar-benar menghilangkan opsi -D dan itu berhasil! Terima kasih! :)
Ray
72

Tautan ini menunjukkan semuanya dan berfungsi dengan baik untuk saya: http://linux.icydog.net/wpa.php

Saya menyalin konten di sini, jadi kami memilikinya, jika situs itu offline.

Baris perintah WPA

Kadang-kadang Anda akan berada di baris perintah tanpa akses ke alat jaringan GUI - tetapi titik akses Anda dijamin dengan WPA. Apa yang kamu kerjakan?

Dengan asumsi kartu nirkabel Anda benar-benar berfungsi (mis. Iwconfig dapat melihatnya dan berinteraksi dengannya), menggunakan wpa_supplicant sebenarnya cukup sederhana. Menginstal wpa_supplicant

Sebagian besar distro saat ini telah menginstal wpa_supplicant secara default. Jika Anda memiliki perintah wpa_passphrase dan wpa_supplicant tersedia, maka Anda siap melakukannya. Jika tidak, Anda harus menginstal paket dengan melakukan sesuatu seperti (untuk Ubuntu):

$ sudo apt-get install wpasupplicant

Atau (untuk Fedora):

# yum install wpa_supplicant

Atau apa pun perintahnya untuk distro Anda.

Membuat file konfigurasi

Sekarang setelah wpa_supplicant diinstal, kami akan membuat file konfigurasinya. Setelah Anda mengetahui frasa sandi SSID dan WPA, yang harus Anda lakukan adalah menjalankan:

$ wpa_passphrase myrouter mypassphrase > wpa.conf

Tentu saja, ganti "myrouter" dengan SSID router Anda, "mypassphrase" dengan frasa sandi WPA Anda, dan "wpa.conf" dengan file apa pun yang ingin Anda simpan konfigurasi. Nama file ini tidak harus mengikuti format tertentu atau memiliki ekstensi tertentu.

Atau, untuk menghindari mengetikkan frasa sandi pada baris perintah (sehingga tidak disimpan dalam riwayat shell), Anda dapat menentukan SSID pada baris perintah. wpa_passphrase akan menunggu Anda mengetikkan frasa sandi diikuti dengan enter:

$ wpa_passphrase myrouter > wpa.conf
mypassphrase

Anda harus memiliki file yang terlihat seperti ini:

network={
    ssid="myrouter"
    #psk="mypassphrase"
    psk=8ada1f8dbea59704ac379538b4d9191f6a72390581b4cd7a72864cea685b1a7f
}

Terhubung

Sekarang kita akan menjalankan wpa_supplicant untuk terhubung ke jaringan nirkabel. Pertama, jika router Anda memancarkan SSID-nya (semuanya dilakukan secara default), Anda mungkin ingin memastikan kartu nirkabel Anda benar-benar dapat melihatnya:

$ iwlist scan

Anda mungkin harus menjalankannya sebagai root untuk memaksakan penyegaran.

Selanjutnya, Anda perlu mengetahui tiga informasi:

  1. Driver nirkabel wpa_supplicant mana yang digunakan untuk kartu Anda. Menjalankan wpa_supplicant --helpdaftar driver yang berbeda yang dimilikinya (di bawah "driver:"). Pada 0.5.8, pilihan berguna adalah: wext, hostap, madwifi, atmel, ndiswrapper, dan ipw(IPW adalah untuk kernel berusia;> = 2.6.13 harus menggunakan wext). Jika Anda tidak melihat kecocokan spesifik untuk kartu Anda, coba wext, karena itu jenisnya.
  2. Perangkat jaringan kartu Anda. Ini biasanya eth1 atau wlan0, tetapi jika Anda tidak yakin Anda bisa menjalankannya iwconfig. Ini akan melaporkan "tidak ada ekstensi nirkabel" untuk perangkat non-nirkabel dan akan menampilkan beberapa data untuk perangkat nirkabel apa pun.
  3. Jalur ke file konfigurasi yang Anda buat pada langkah sebelumnya.

Sekarang Anda memiliki data ini, jalankan (sebagai root):

# wpa_supplicant -D[driver] -i[device] -c[/path/to/config]

Tidak ada spasi di antara opsi dan parameter. Jangan sertakan tanda kurung karena saya baru saja menambahkannya untuk kejelasan. Misalnya, untuk laptop saya tampilannya seperti ini:

# wpa_supplicant -Dwext -ieth1 -c/root/wpa.conf

Anda juga dapat menjalankannya di latar belakang dengan menggunakan -Bopsi sehingga tidak mengambil konsol Anda.

Sekarang Anda dikaitkan dengan jaringan.

Sedang online

Untuk benar-benar online, Anda harus mendapatkan IP entah bagaimana. Kebanyakan orang hanya ingin mendapatkan IP dinamis dari server DHCP, mungkin yang dibangun ke router. (Saya tidak akan membahas pengaturan IP statis dan tabel routing karena itu adalah binatang itu sendiri.)

Untuk mendapatkan sewa DHCP, lepaskan dulu sewa apa pun yang masih Anda miliki (sebagai root):

# dhclient -r

Kemudian minta sewa baru (tentu saja mengganti eth1 dengan nama perangkat jaringan Anda, yang sama seperti yang Anda gunakan di bagian sebelumnya):

# dhclient eth1

Anda sekarang memiliki IP, setidaknya secara teori. Selamat berselancar!

Alexandre Schmidt
sumber
1
FYI untuk orang yang belum berpengalaman, sebagian besar nama antarmuka kartu nirkabel adalah wlan <number>, jadi misalnya kartu nirkabel pertama dalam konfigurasi Anda akan wlan0 bukan eth1
xorinzor
Terima kasih, perintah wpa_passphrase membantu. Saya mencoba jawaban yang diterima tetapi file salah, wpa_passphrase membantu dengan itu dan kemudian saya baru saja melewati perintah kedua dari jawaban yang diterima (saya sudah tahu pasti bahwa itu disebut wlan0) ...
Lilian A. Moraru
terima kasih itu benar-benar hebat, dapatkah saya memberi saya tautan sampul bagaimana pengaturan tabel statis dan perutean ... :)
Yassine
1
@AlexandreSchmidt +1 karena komprehensif!
John Strood
@JohnStrood dengan tegas Anda harus berterima kasih kepada siapa pun yang menulis situs web karena ini adalah salinan dari sana
icc97
8

Debian dan distro lain memiliki wpa_suplicant berjalan sebagai layanan secara default untuk mengelola jaringan wifi. wpa_suplicant dapat ditangani oleh klien / front-end yang berbeda seperti manajer jaringan GUI. Ini lebih baik dijelaskan dalam wiki debian ini .

wpa_cli adalah klien baris perintah wpa_suplicant untuk mengelola jaringan wifi.

Sunting : Saya baru saja menemukan posting ini menjelaskan cara menggunakan nmcli dan jauh lebih baik daripada wpa_cli karena ini kompatibel dengan GUI Network Manager dan pengaturannya serta jaringan wifi yang disimpan.

Contoh penggunaan wpa_cli :

Periksa apakah saya sudah memiliki antarmuka jaringan yang diaktifkan wifi:

# iwconfig
wlan0     IEEE 802.11bgn  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=22 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on

Periksa apakah proses wpa_suplicant sedang berjalan:

# ps -e | grep wpa
1881 ?        00:00:07 wpa_supplicant

Masuk dalam mode interaktif klien wpa:

# wpa_cli

Daftar jalur akses yang tersedia:

> scan
> scan_results

... dan Anda mendapatkan sesuatu seperti ini:

bssid / frequency / signal level / flags / ssid
e0:60:66:7c:81:7f       2417    -66     [WPA2-PSK-CCMP][ESS]    vodafone817E
e0:60:66:61:83:4b       2452    -76     [WPA2-PSK-CCMP][WPS][ESS]       vodafone834A
f8:8e:85:c5:65:c2       2462    -76     [WPA-PSK-CCMP+TKIP][WPS][ESS]   MOVISTAR_65C1
a8:d3:f7:46:0c:be       2472    -83     [WPA-PSK-CCMP+TKIP][WPA2-PSK-CCMP+TKIP][WPS][ESS]       Orange-0CBC
...

Tambahkan AP Anda:

> add_network
> set_network 0 ssid "vodafone817E"
> set_network 0 psk "my-pass-phrase"

Pilih sebagai saat ini:

> enable_network 0

Hubungkan ke sana:

> reconnect

Periksa status:

> status

Keluar dari wpa_cli:

> quit

Dari shell, minta DHCP untuk pengaturan IP dan net:

# dhclient -r
# dhclient wlan0
David
sumber
Mengapa Anda berbicara tentang wpa_clidan kemudian Anda menulis wpa_client? Di Kubuntu 18.10 wpa_clienttampaknya tidak ada sebagai perintah
rtrtrt
Anda benar ... diperbaiki.
David
3

Pertama-tama ambil kartu Anda jika tidak berjalan:

ifconfig wlan0 up

Atur parameter sesuai dengan jaringan Anda

iwlist wlan0 scan
iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY
LnxSlck
sumber
15
Saya percaya bahwa ini hanya untuk WEP. Tanpa WPA;)
Rinzwind
Rinzwind benar. Ini untuk WEP. Maaf atas kesalahanmu.
LnxSlck
2
tidak masalah. Tinggalkan di sini dan seseorang suatu hari nanti akan mendapat manfaat dari jawaban Anda;)
Rinzwind
apakah ini akan berfungsi bahkan tanpa kunci seperti jaringan terbuka?
EvoandroidEvo
1
Saya harap tidak ada yang mendapat manfaat dari jawaban khusus WEP: '(
Max Ried
2

Sebenarnya ada cara untuk melakukannya menggunakan NetworkManager, jika Anda memiliki checkboxpaket yang diinstal.

sudo /usr/share/checkbox/create_connection SSID --security=wpa -key=WPA-KEY

(Kredit: bug 923836 , yang muncul dalam pencarian saya pada topik.)

zigg
sumber
2

Semua jawaban yang menyarankan wpa_supplicant salah. Ya, itu mungkin menghubungkan Anda ke jaringan WPA, tapi itu solusi yang buruk dalam jangka panjang karena akan sangat sulit untuk mempertahankan dan tidak akan bermain dengan baik dengan koneksi kabel. Baca jawaban ini dan buat hidup Anda lebih mudah dengan menggunakan Network Manager dari baris perintah. Saya menghabiskan waktu berjam-jam untuk mengkonfigurasi wpa_supplicant, kemudian mencoba nmcli dan "hanya berhasil".

Cerin
sumber
2
Masalah dengan hal-hal yang 'hanya berfungsi' adalah mereka dapat dengan mudah 'tidak bekerja' dan kemudian di mana Anda berada. Untuk orang-orang CLI, pendekatan wpa_supplicant langsung lebih baik karena mengekspos semua bagiannya. Keutamaan besar NM adalah bahwa semua bagiannya tersembunyi. Jadi salah untuk mengatakan bahwa pendekatan wpa_supplicant salah. Anda suka hal-hal yang 'hanya berfungsi', baik. Preferensi Anda adalah hak Anda, tetapi tidak sopan untuk mengatakan kepada orang bahwa mereka salah hanya karena preferensi mereka bukan milik Anda. Inilah sebabnya saya menandai jawaban Anda.
Stephen Boston
2

Anda dapat menggunakan VSWM - Wireless Manager Sangat Sederhana. Anda menempatkan AP yang dikenal di file cfg sederhana (/etc/vswm.cfg) dan ketika Anda menjalankannya vswmmemindai jaringan yang tersedia dan menghubungkan kartu Anda dengan yang pertama yang muncul di /etc/vswm.cfg.

VSWM tersedia di https://github.com/dmelo/vswm . Berikut ini contoh tampilan file konfigurasi vswm.cfg:

[global]

dev = wlan0
dns = ["4.2.2.1","8.8.8.8"]

[wlan0-0]

ssid = Network1
psk = netpassword
protocol = WPA
net = dhcp

[wlan0-1]

ssid = Network2
protocol = WEP
net = static
address = 192.168.0.15/24

Di bawah tenda, ia menggunakan alat baris perintah standar: iwlist, wpa_supplicant, iwconfig, dhclient ... Hanya itu yang mengotomatiskan pekerjaan.

Diogo Melo
sumber
1

Saya kesulitan menggunakan wpa_supplicantlangsung untuk mendapatkan jaringan nirkabel. ID jaringan dan kata sandi saya menghasilkan kesalahan saat saya menggunakanwpa_supplicant.conf file pada wpa_supplicantbaris perintah, mis

sudo wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -B

Saya bisa mengatasinya wpa_cli . Urutan perintah yang harus saya gunakan, karena saya menggunakan driver Windows dengan Linux ndiswrapper, adalah:

sudo modprobe ndiswrapper
sudo iwconfig wlan0 essid "<My Network ID>" mode managed
sudo wpa_cli identity "<My Network ID>" password "<My password>"

Saya mengatur jaringan dengan menambahkannya di bagian jaringan nirkabel di GUI, sehingga saya bisa mengklik ikon jaringan kabel atau nirkabel dan memilih penyedia nirkabel (yang kadang-kadang diperlukan untuk menyelesaikan login).

John
sumber
1

Itu nmcli adalah versi baris perintah dari aplikasi manajer jaringan default di Ubuntu.

Beberapa kelebihannya adalah ia menggunakan konfigurasi yang sudah Anda miliki dari antarmuka grafis dan tidak perlu akses root.

Anda dapat berlari nmcliuntuk menunjukkan opsi yang tersedia.

Contoh untuk terhubung ke wifi bernama MYESSID:

    nmcli c up MYESSID   
desgua
sumber
1
nmcli, nm-applet, dan ya jawaban Anda adalah yang terbaik tapi saya tidak tahu mengapa tidak ada yang memilihnya
Saeid
@Saeid Terima kasih!
desgua