ฉันจะเชื่อมต่อกับเครือข่าย WPA wifi โดยใช้บรรทัดคำสั่งได้อย่างไร


113

โดยพื้นฐานแล้วฉันต้องการใช้iwconfigเพื่อเชื่อมต่อกับเครือข่าย wifi ของฉันเมื่อฉันไม่ได้อยู่ใน X แต่ฉันไม่เห็นวิธีที่จะทำในหน้าคน ความคิดใด ๆ


คำตอบ:


113

iw (รายการ / การกำหนดค่า) สามารถจัดการ WEP ได้เท่านั้น

คุณจำเป็นต้องมีwpasupplicantแพคเกจซึ่งมีคำสั่งให้ติดตั้งในกรณีที่จำเป็นผ่านwpa_supplicantsudo apt-get install wpasupplicant

คุณใส่ SSID และรหัสผ่านของคุณลงไป/etc/wpa_supplicant.conf(ต้องใช้ sudo)

ตัวอย่าง:

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

สมมติว่าอินเตอร์เฟสของคุณคือ wlan0 คุณสามารถเชื่อมต่อกับ:

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

"wext" เป็นไดรเวอร์และจะมีความเฉพาะเจาะจงสำหรับการ์ดแต่ละใบ wpa_supplicant -hเอ่ยถึง ตัวอย่าง:

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.

ดีที่ iwlist / iwconfig สามารถจัดการ WEP เท่านั้น แต่ในกรณีของฉันwpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && dhclient wlan0 ไม่ได้เชื่อมต่อกับเครือข่ายไร้สาย แต่โดยค่าเริ่มต้น NetworkManager เชื่อมต่อฉันกับเครือข่ายที่ฉันต้องการลองวิธีบรรทัดคำสั่งมีข้อผิดพลาดบางอย่างที่ฉันทำ?
สมาชิกที่ลงทะเบียน

คำสั่งสุดท้ายเป็นจริงสองคำสั่งและคุณจำเป็นต้องเรียกใช้ทั้งสองเป็นroot(ผู้ดูแลระบบ) ดังนั้นหรือแบ่งได้เป็นสองคำสั่งไปรอบ ๆsudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && sudo dhclient wlan0 &&
Anders

วิธีแก้ปัญหานี้ทำให้ฉันเกิดข้อผิดพลาด "wlan0: ไดรเวอร์ไม่ได้รับการสนับสนุน 'ext'"
Cerin

1
@Rinzwind ใช่ ... การดู manpage ของ wpa_supplicant แสดงให้เห็นว่าไดรเวอร์อาจแตกต่างกันดังนั้นคำสั่งของคุณอาจไม่ทำงานตามที่กำหนด คุณต้องเลือก -D <driver> สำหรับฮาร์ดแวร์เฉพาะของคุณ สำหรับฉันมันคือ "nl80211"
Cerin

1
ฉันแค่ละเว้นตัวเลือก -D อย่างสมบูรณ์และใช้งานได้! ขอบคุณ! :)
Ray

72

ลิงค์นี้แสดงทุกอย่างและทำงานได้ดีสำหรับฉัน: http://linux.icydog.net/wpa.php

ฉันกำลังคัดลอกเนื้อหาที่นี่ดังนั้นเรามีมันในกรณีที่ไซต์ออฟไลน์

บรรทัดคำสั่ง WPA

บางครั้งคุณจะอยู่ที่บรรทัดคำสั่งโดยไม่สามารถเข้าถึงเครื่องมือเครือข่าย GUI ได้ แต่จุดเข้าใช้ของคุณจะปลอดภัยด้วย WPA คุณทำอะไร?

สมมติว่าการ์ดไร้สายของคุณใช้งานได้จริง (เช่น iwconfig สามารถดูและโต้ตอบกับมันได้) การใช้ wpa_supplicant นั้นง่ายมาก การติดตั้ง wpa_supplicant

distros ส่วนใหญ่ในปัจจุบันมีการติดตั้ง wpa_supplicant เป็นค่าเริ่มต้น หากคุณมีคำสั่ง wpa_passphrase และ wpa_supplicant พร้อมใช้งานแสดงว่าคุณพร้อมแล้ว มิฉะนั้นคุณจะต้องติดตั้งแพคเกจโดยทำสิ่งที่ชอบ (สำหรับ Ubuntu):

$ sudo apt-get install wpasupplicant

หรือ (สำหรับ Fedora):

# yum install wpa_supplicant

หรือสิ่งที่คำสั่งสำหรับ distro ของคุณ

กำลังสร้างไฟล์ปรับแต่ง

หลังจากติดตั้ง wpa_supplicant แล้วเราจะสร้างไฟล์การกำหนดค่า เมื่อคุณทราบวลีรหัสผ่าน SSID และ WPA สิ่งที่คุณต้องทำคือเรียกใช้:

$ wpa_passphrase myrouter mypassphrase > wpa.conf

แน่นอนแทนที่ "myrouter" ด้วย SSID ของเราเตอร์ของคุณ "mypassphrase" ด้วยวลีรหัสผ่าน WPA ของคุณและ "wpa.conf" ด้วยไฟล์ใดก็ตามที่คุณต้องการจัดเก็บการกำหนดค่าชื่อไฟล์นี้ไม่จำเป็นต้องทำตามรูปแบบเฉพาะหรือ มีนามสกุลเฉพาะ

เพื่อหลีกเลี่ยงการพิมพ์ข้อความรหัสผ่านบนบรรทัดคำสั่ง (ดังนั้นจึงไม่ได้รับการบันทึกไว้ในประวัติของเชลล์) คุณสามารถระบุเพียง SSID ในบรรทัดคำสั่ง wpa_passphrase จะรอให้คุณพิมพ์ข้อความรหัสผ่านตามด้วย enter:

$ wpa_passphrase myrouter > wpa.conf
mypassphrase

คุณควรท้ายด้วยไฟล์ที่มีลักษณะดังนี้:

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

กำลังเชื่อมต่อ

ตอนนี้เราจะเรียกใช้ wpa_supplicant เพื่อเชื่อมต่อกับเครือข่ายไร้สาย ขั้นแรกหากเราเตอร์ของคุณออกอากาศ SSID (พวกเขาทำตามค่าเริ่มต้น) คุณอาจต้องการตรวจสอบให้แน่ใจว่าการ์ดไร้สายของคุณสามารถเห็นได้จริง:

$ iwlist scan

คุณอาจต้องเรียกใช้งานในฐานะ root เพื่อบังคับให้รีเฟรช

ถัดไปคุณจะต้องรู้ข้อมูลสามส่วน:

  1. ไดรเวอร์ไร้สาย wpa_supplicant ใดที่จะใช้สำหรับการ์ดของคุณ การรันwpa_supplicant --helpจะแสดงรายการไดรเวอร์ต่าง ๆ ที่มี (ภายใต้ "ไดรเวอร์:") ในฐานะของ 0.5.8, ตัวเลือกที่มีประโยชน์: wext, hostap, madwifi, atmel, ndiswrapperและipw(IPW สำหรับเมล็ดเก่าเท่านั้น> = 2.6.13 ควรใช้ wext) หากคุณไม่เห็นการจับคู่แบบเฉพาะเจาะจงสำหรับการ์ดของคุณให้ลองใช้ wext เพราะเป็นสิ่งที่จับใจได้
  2. อุปกรณ์เครือข่ายของการ์ดของคุณ โดยปกติจะเป็น eth1 หรือ wlan0 แต่ถ้าคุณไม่แน่ใจคุณก็สามารถวิ่งiwconfigได้ มันจะรายงาน "ไม่มีส่วนขยายไร้สาย" สำหรับอุปกรณ์ที่ไม่ใช่ไร้สายและจะแสดงข้อมูลบางอย่างสำหรับอุปกรณ์ไร้สายใด ๆ
  3. พา ธ ไปยังไฟล์คอนฟิกูเรชันที่คุณสร้างในขั้นตอนก่อนหน้า

ตอนนี้คุณมีข้อมูลนี้แล้วให้รัน (เหมือนรูท):

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

ไม่มีช่องว่างระหว่างตัวเลือกและพารามิเตอร์ อย่าใส่วงเล็บในขณะที่ฉันเพิ่งเพิ่มมันเพื่อความชัดเจน ตัวอย่างเช่นสำหรับแล็ปท็อปของฉันดูเหมือนว่า:

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

คุณยังสามารถเรียกใช้มันในพื้นหลังโดยใช้-Bตัวเลือกเพื่อไม่ให้ใช้คอนโซลของคุณ

ตอนนี้คุณเชื่อมโยงกับเครือข่ายแล้ว

กำลังออนไลน์

ในการรับออนไลน์คุณจะต้องได้รับ IP อย่างใด คนส่วนใหญ่เพียงต้องการรับ IP แบบไดนามิกจากเซิร์ฟเวอร์ DHCP อาจเป็นหนึ่งในตัวเราเตอร์ (ฉันจะไม่ครอบคลุมการตั้งค่า IP แบบคงที่และตารางเส้นทางเนื่องจากเป็นสัตว์ในตัวเอง)

หากต้องการรับสัญญาเช่า DHCP ก่อนอื่นให้ปล่อยสัญญาเช่าที่คุณยังถืออยู่

# dhclient -r

จากนั้นขอเช่าใหม่ (แน่นอนแทนที่ eth1 ด้วยชื่ออุปกรณ์เครือข่ายของคุณซึ่งเป็นชื่อเดียวกับที่คุณใช้ในส่วนก่อนหน้า):

# dhclient eth1

ตอนนี้คุณมี IP อย่างน้อยก็ในทางทฤษฎี มีความสุขในการท่องเว็บ!


1
FYI สำหรับผู้ที่ไม่มีประสบการณ์ชื่ออินเตอร์เฟสการ์ดไร้สายส่วนใหญ่จะเป็น wlan <number> ดังนั้นตัวอย่างเช่นการ์ดไร้สายใบแรกในการกำหนดค่าของคุณจะเป็น wlan0 แทนที่จะเป็น eth1
xorinzor

ขอบคุณคำสั่ง wpa_passphrase ช่วย ฉันลองคำตอบที่ยอมรับแล้ว แต่ไฟล์ผิด wpa_passphrase ช่วยด้วยแล้วฉันก็เพิ่งผ่านคำสั่งที่สองจากคำตอบที่ยอมรับ (ฉันรู้แล้วว่ามันถูกเรียกว่า wlan0) ...
Lilian A. Moraru

ขอบคุณที่เป็นที่ดีจริงๆ u สามารถให้ฉันปกลิงค์วิธีการติดตั้งแบบคงที่และตารางเส้นทาง ... :)
Yassine

1
@AlexandreSchmidt +1 สำหรับการเป็นผู้ครอบคลุม!
John Strood

@JohnStrood อย่างเคร่งครัดคุณควรขอบคุณใครก็ตามที่เขียนเว็บไซต์เพราะมันเป็นสำเนาจากที่นั่น
icc97

8

Debian และ distros อื่น ๆ มี wpa_suplicant กำลังทำงานเป็นบริการตามค่าเริ่มต้นเพื่อจัดการเครือข่าย wifi wpa_suplicant สามารถจัดการได้โดยไคลเอนต์ / front-end ที่แตกต่างกันเช่น GUI ผู้จัดการเครือข่าย นี่คือคำอธิบายที่ดีขึ้นในวิกิเดเบียนนี้

wpa_cli เป็นบรรทัดคำสั่งลูกค้า wpa_suplicant เพื่อจัดการเครือข่ายไร้สาย

แก้ไข : ฉันเพิ่งพบโพสต์นี้อธิบายวิธีการใช้ nmcliและมันดีกว่า wpa_cli เนื่องจากมันเข้ากันได้กับ GUI Network Manager และการตั้งค่าและเครือข่าย wifi ที่บันทึกไว้

ตัวอย่างการใช้ wpa_cli :

ตรวจสอบว่าฉันมีอินเตอร์เฟซเครือข่ายที่เปิดใช้งาน 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

ตรวจสอบว่ากระบวนการ wpa_suplicant ทำงานอยู่หรือไม่:

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

เข้าสู่โหมดโต้ตอบของไคลเอ็นต์ wpa:

# wpa_cli

รายการจุดเชื่อมต่อที่มี:

> scan
> scan_results

... และคุณได้รับสิ่งนี้:

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
...

เพิ่ม AP ของคุณ:

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

เลือกเป็นปัจจุบัน:

> enable_network 0

เชื่อมต่อกับมัน:

> reconnect

ตรวจสอบสถานะ:

> status

ออกจาก wpa_cli:

> quit

จาก shell ร้องขอ DHCP สำหรับ IP และการตั้งค่าเน็ต:

# dhclient -r
# dhclient wlan0

ทำไมคุณพูดถึงwpa_cliแล้วคุณเขียนwpa_client? บน Kubuntu 18.10 wpa_clientดูเหมือนว่าไม่มีอยู่ในฐานะคำสั่ง
rtrtrt

คุณพูดถูก ...
David

3

ก่อนที่จะยกการ์ดของคุณขึ้นถ้ามันไม่ทำงาน:

ifconfig wlan0 up

ตั้งค่าพารามิเตอร์ตามเครือข่ายของคุณ

iwlist wlan0 scan
iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY

15
ฉันเชื่อว่านี่สำหรับ WEP เท่านั้น ไม่มี WPA;)
Rinzwind

Rinzwind ถูกต้อง นี่สำหรับ WEP ขออภัยในความผิดพลาด
LnxSlck

2
ไม่มีปัญหา. ทิ้งไว้ที่นี่และใครสักคนจะได้รับประโยชน์จากคำตอบของคุณในวันนี้)
Rinzwind

มันจะใช้งานได้แม้ไม่มีกุญแจเหมือนเครือข่ายเปิด
EvoandroidEvo

1
ฉันหวังว่าจะไม่มีใครได้รับประโยชน์จากคำตอบเฉพาะของ WEP: '(
Max Ried

2

จริงๆแล้วมีวิธีการทำโดยใช้ NetworkManager หากคุณมีcheckboxแพ็คเกจที่ติดตั้ง

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

(เครดิต: ข้อผิดพลาด 923836ซึ่งปรากฏขึ้นในการค้นหาของฉันในหัวข้อ)


2

คำตอบทั้งหมดที่แนะนำ wpa_supplicant นั้นผิด ใช่มันอาจเชื่อมต่อคุณเข้ากับเครือข่าย WPA แต่นั่นเป็นวิธีแก้ปัญหาที่ไม่ดีในระยะยาวเพราะมันจะยากมากในการบำรุงรักษาและจะไม่เล่นได้ดีกับการเชื่อมต่อแบบมีสาย อ่านคำตอบนี้และทำให้ชีวิตของคุณง่ายขึ้นโดยใช้ Network Manager จากบรรทัดคำสั่ง ฉันเสียเวลาพยายามกำหนดค่า wpa_supplicant จากนั้นลอง nmcli และ "เพิ่งทำงาน"


2
ปัญหาเกี่ยวกับสิ่งต่าง ๆ ที่ 'เพิ่งทำงาน' ก็คือพวกเขาสามารถ 'ไม่ทำงาน' ได้อย่างง่ายดายแล้วคุณอยู่ไหน สำหรับคน CLI วิธี wpa_supplicant โดยตรงนั้นดีกว่าเพราะมันเปิดเผยทุกส่วน คุณธรรมที่ยิ่งใหญ่ของ NM คือทุกส่วนของมันถูกซ่อนอยู่ ดังนั้นจึงผิดที่จะบอกว่าวิธีการ wpa_supplicant นั้นผิด คุณชอบสิ่งที่ 'เพิ่งทำงาน' ก็ได้ การตั้งค่าของคุณเป็นสิทธิ์ของคุณ แต่เป็นการไม่สุภาพที่จะบอกคนอื่นว่าพวกเขาผิดเพียงเพราะความชอบของพวกเขาไม่ใช่ของคุณ นี่คือเหตุผลที่ฉันตอบคำถามของคุณ
Stephen Boston

2

คุณสามารถใช้ VSWM - ตัวจัดการไร้สายที่ง่ายมาก คุณวาง APs ที่รู้จักของคุณลงในไฟล์ cfg อย่างง่าย (/etc/vswm.cfg) และเมื่อคุณรันvswmมันจะสแกนเครือข่ายที่มีอยู่และเชื่อมต่อการ์ดของคุณด้วยตัวแรกที่ปรากฏบน /etc/vswm.cfg

VSWM สามารถใช้ได้ที่https://github.com/dmelo/vswm นี่คือการเลือกว่าไฟล์การกำหนดค่า 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

ภายใต้ hoods จะใช้เครื่องมือบรรทัดคำสั่งมาตรฐาน: iwlist, wpa_supplicant, iwconfig, dhclient ... มันทำงานโดยอัตโนมัติเท่านั้น


1

ฉันมีปัญหาในการใช้wpa_supplicantโดยตรงกับเครือข่ายไร้สาย ID เครือข่ายและรหัสผ่านของฉันสร้างข้อผิดพลาดเมื่อฉันใช้wpa_supplicant.confไฟล์บนwpa_supplicantบรรทัดคำสั่งเช่น

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

wpa_cliผมสามารถที่จะหลีกเลี่ยงมันด้วย ลำดับคำสั่งที่ฉันต้องใช้เนื่องจากฉันใช้ไดรเวอร์ Windows ที่มี Linux ndiswrapper คือ:

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

ฉันมีเครือข่ายตั้งค่าโดยเพิ่มในส่วนไร้สายของเครือข่ายใน GUI เพื่อให้ฉันสามารถคลิกที่ไอคอนเครือข่ายแบบใช้สายหรือไร้สายและเลือกผู้ให้บริการไร้สาย


1

The nmcliเป็นเวอร์ชันบรรทัดคำสั่งของแอปตัวจัดการเครือข่ายเริ่มต้นบน Ubuntu

ข้อดีบางประการคือใช้การกำหนดค่าที่คุณมีอยู่แล้วจากส่วนต่อประสานกราฟิกและไม่จำเป็นต้องเข้าถึงรูท

คุณสามารถเรียกใช้nmcliเพื่อแสดงตัวเลือกที่มี

ตัวอย่างการเชื่อมต่อ wifi ชื่อ MYESSID:

    nmcli c up MYESSID   

1
nmcli, nm-applet, และใช่คำตอบของคุณดีที่สุด แต่ฉันไม่รู้ว่าทำไมไม่มีใครลงคะแนนให้มันเลย
Saeid

@Saeid ขอบคุณ!
desgua
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.