コマンドラインを使用してWPA wifiネットワークに接続するにはどうすればよいですか?


113

したがって、基本的には、iwconfigXの内部にいないときにWi-Fiネットワークに接続するために使用したいと思います。しかし、manページにはそれを行う方法がありません。何か案が?


回答:


113

iw (list / config)はWEPのみを処理できます。

コマンドwpasupplicantを提供するパッケージがwpa_supplicant必要sudo 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がネットワークに接続し、コマンドラインの方法を試してみたいと思います。
登録ユーザー

最後のコマンドは実際には2つのコマンドであり、両方をroot(システム管理者)として実行する必要があります。だから、sudo wpa_supplicant -B -iwlan0 -c/etc/wpa_supplicant.conf -Dwext && sudo dhclient wlan0 または周りの二つのコマンドに分割します&&
アンデルス14年

このソリューションでは、「wlan0:Unsupported driver 'ext'」というエラーが表示されます。
セリン

1
@Rinzwind、はい... wpa_supplicantのマンページを見ると、ドライバーが異なる可能性があるため、コマンドが文字通り与えられたとおりに機能しない可能性があります。特定のハードウェアに-D <driver>を選択する必要があります。私にとっては、「nl80211」でした。
セリン

1
-Dオプションを完全に省略しただけで機能します!ありがとう!:)
レイ

72

このリンクはそれをすべて示し、私のためにうまくいきました:http : //linux.icydog.net/wpa.php

ここでコンテンツをコピーしているので、サイトがオフラインになった場合に備えて用意しています。

コマンドラインWPA

GUIネットワークツールにアクセスできないコマンドラインを使用することもありますが、アクセスポイントはWPAで保護されています。職業はなんですか?

ワイヤレスカードが実際に機能すると仮定すると(つまり、iwconfigがワイヤレスカードを確認して操作できる)、wpa_supplicantの使用は実際には非常に簡単です。wpa_supplicantのインストール

現在、ほとんどのディストリビューションにはデフォルトでwpa_supplicantがインストールされています。コマンドwpa_passphraseおよびwpa_supplicantを使用できる場合は、準備ができています。それ以外の場合は、次のようなことを実行してパッケージをインストールする必要があります(Ubuntuの場合):

$ sudo apt-get install wpasupplicant

または(Fedoraの場合):

# yum install wpa_supplicant

または、ディストリビューション用のコマンドは何でも。

構成ファイルの生成

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として実行する必要があります。

次に、3つの情報を知る必要があります。

  1. カードに使用するwpa_supplicantワイヤレスドライバー。実行中にwpa_supplicant --helpは、さまざまなドライバーが一覧表示されます(「ドライバー:」の下)。:0.5.8のように、便利な選択肢があるwexthostapmadwifiatmelndiswrapper、およびipw(IPWは古いカーネル用です;> = 2.6.13はwextを使用する必要があります)。カードに特定の一致が表示されない場合は、wextを試してください。
  2. カードのネットワークデバイス。通常、これはeth1またはwlan0ですが、不明な場合は単に実行できますiwconfig。非ワイヤレスデバイスの場合は「ワイヤレス拡張機能なし」と報告され、ワイヤレスデバイスの一部のデータが表示されます。
  3. 前の手順で作成した構成ファイルへのパス。

このデータが得られたので、実行します(rootとして):

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

オプションとパラメーターの間にスペースはありません。わかりやすくするために括弧を追加しただけなので、括弧は含めないでください。たとえば、私のラップトップの場合、次のようになります。

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

また、-Bオプションを使用してバックグラウンドで実行し、コンソールを占有しないようにすることもできます。

これで、ネットワークに関連付けられました。

オンラインにする

実際にオンラインにするには、何らかの形でIPを取得する必要があります。ほとんどの人は、おそらくルーターに組み込まれているDHCPサーバーから動的IPを取得したいと思うでしょう。(静的IPとルーティングテーブルの設定については説明しません。それはそれ自体が獣だからです。)

DHCPリースを取得するには、最初に(ルートとして)保持しているリースを解放します。

# dhclient -r

次に、新しいリースを要求します(もちろん、eth1を前のセクションで使用したものと同じネットワークデバイスの名前に置き換えます)。

# dhclient eth1

少なくとも理論的には、これでIPができました。ハッピーサーフィン!


1
例えば、あなたの構成が第1のワイヤレスカードではなくeth1のでwlan0されますので、FYI未経験の人のために、ほとんどの無線カードのインタフェース名は、WLAN <番号>になります
xorinzor

おかげで、wpa_passphraseコマンドが役に立ちました。私は受け入れ答えを試みたが、ファイルが間違っていた、それを手伝ってくれましたwpa_passphrase、その後、私は受け入れ答え(私はすでにそれがwlan0と呼ばれていることを確認するために知っていた)...から2番目のコマンドを渡す
リリアンA. Moraruの

さんは本当に素晴らしかったおかげで、uは私のリンクカバーのセットアップ方法スタティックルーティングテーブル... :)を与えることができます
ヤシン

1
@AlexandreSchmidt +1は包括的であるためです!
ジョンストロード

@JohnStrood厳密にあなたはそれがそこからのコピーであるので、ウェブサイトを書いた人に感謝する必要があります
-icc97

8

Debianや他のディストリビューションでは、wifiネットワークを管理するために、デフォルトでwpa_suplicantがサービスとして実行されています。wpa_suplicantは、ネットワークマネージャーGUIなどのさまざまなクライアント/フロントエンドで処理できます。これは、このdebian wikiでよりよく説明されています

wpa_cliは、wifiネットワークを管理するコマンドラインwpa_suplicantクライアントです。

編集nmcliの使用方法を説明しているこの投稿を見つけましたが、GUI Network Managerとその設定および保存されたwifiネットワークと互換性があるため、wpa_cliよりもはるかに優れています。

wpa_cliの使用例

Wi-Fi対応のネットワークインターフェイスが既にあることを確認します。

# 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

シェルから、IPおよびネット設定のDHCPを要求します。

# dhclient -r
# dhclient wlan0

なぜあなたが話しwpa_cli、それから書くのwpa_clientですか?Kubuntu 18.10 wpa_clientではコマンドとして存在しないようです
rtrtrt

あなたは正しい...修正されました。
デビッド

3

実行されていない場合は、まずカードを埋めてください:

ifconfig wlan0 up

ネットワークに合わせてパラメーターを設定します

iwlist wlan0 scan
iwconfig wlan0 essid NETWORK_ID key WIRELESS_KEY

15
これはWEP専用だと思います。WPAなし;)
リンツウィンド

リンツウィンドは正しい。これはWEP用です。て間違えてごめんなさい。
-LnxSlck

2
問題ない。ここに
置いておく

オープンネットワークのようなキーがなくても機能しますか?
EvoandroidEvo

1
WEP固有の回答から誰も恩恵を受けないことを願っています: '(
Max Ried

2

checkboxパッケージがインストールされている場合、実際にはNetworkManagerを使用してそれを行う方法があります。

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

(クレジット:bug 923836、このトピックに関する私の検索で出てきました。)


2

wpa_supplicantを示唆するすべての答えは間違っています。はい、WPAネットワークに接続できますが、それは維持するのが非常に難しく、有線接続でうまく再生できないため、長期的には悪い解決策です。コマンドラインからNetwork Managerを使用して、この回答を読み、生活を楽にしてください。wpa_supplicantを設定しようとして時間を無駄にし、nmcliを試してみたところ、「うまくいきました」。


2
「ちょうどうまくいく」ことの問題は、彼らが簡単に「うまくいかない」こと、そしてあなたがどこにいるかということです。CLIの人にとっては、wpa_supplicantの直接的なアプローチは、すべての部分を公開するため、より優れています。NMの大きな利点は、そのすべての部分が隠されていることです。したがって、wpa_supplicantアプローチが間違っていると言うのは間違っています。あなたは「うまくいく」ものが好きです。あなたの好みはあなたの権利ですが、彼らの好みがあなたのものではないという理由だけで彼らが間違っていると人々に伝えることは失礼です。これが私があなたの答えを下げた理由です。
スティーブンボストン

2

VSWM-Very Simple Wireless Managerを使用できます。既知のAPを単純な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

内部では、iwlist、wpa_supplicant、iwconfig、dhclientなどの標準のコマンドラインツールを使用します。それだけがジョブを自動化します。


1

wpa_supplicant直接使用してワイヤレスネットワークに接続するのに問題がありました。コマンドラインでwpa_supplicant.confファイルを使用すると、ネットワークIDとパスワードでエラーが生成されましたwpa_supplicant。たとえば

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

私はそれを回避することができましたwpa_cli。Linux ndiswrapperでWindowsドライバーを使用しているため、使用しなければならなかったコマンドシーケンスは次のとおりです。

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

GUIのネットワークのワイヤレスセクションに追加してネットワークをセットアップしたため、有線またはワイヤレスネットワークアイコンをクリックして、ワイヤレスプロバイダーを選択できました(ログインを完了するために必要な場合がありました)。


1

これnmcliは、Ubuntuのデフォルトのネットワークマネージャーアプリのコマンドラインバージョンです。

いくつかの利点は、グラフィカルインターフェイスから既に持っている構成を使用し、ルートアクセスを必要としないことです。

実行nmcliして、使用可能なオプションを表示できます。

MYESSIDという名前のwifiに接続する例:

    nmcli c up MYESSID   

1
nmcli、nm-applet、そしてええ、あなたの答えは最高ですが、なぜ誰もそれを投票しないのかわかりません
Saeid

@Saeidありがとうございます!
20:05の
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.