[{"data":1,"prerenderedAt":4696},["ShallowReactive",2],{"wiki-page-\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo":3,"wiki-doc-items-\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo":4636,"language-switcher-data-\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo":4680,"wiki-i18n-paths-\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo":4695},{"id":4,"title":5,"body":6,"canonicalPath":4617,"chapterDepth":4618,"chapterOrder":4619,"date":4620,"description":31,"docI18nKey":4621,"docKey":4622,"docRoot":4623,"docTitle":4624,"extension":4625,"i18nKey":4626,"isBlogPost":4627,"isWikiDoc":1151,"isWikiIndex":4627,"layout":4628,"legacyPath":4628,"locale":4629,"localeSlug":4630,"meta":4631,"navigation":1151,"path":4617,"seo":4632,"sourcePath":4633,"sourceStem":4626,"stem":4634,"wikiDepth":38,"__hash__":4635},"content\u002F_i18n\u002Fzh-hk\u002Fwiki\u002F2024-03-30-Linux教程\u002F0900-其他操作.md","其他操作",{"type":7,"value":8,"toc":4606},"minimark",[9,13,17,25,313,316,389,392,396,400,406,409,412,415,420,423,426,429,435,438,443,446,449,454,457,462,465,468,473,476,481,484,500,503,506,518,521,530,533,536,545,548,557,560,563,572,575,578,597,600,603,612,617,620,623,632,635,644,647,656,659,668,673,676,684,689,692,701,704,712,717,720,729,732,735,739,742,747,750,755,770,775,780,791,796,802,807,822,827,830,835,840,845,853,858,865,870,881,886,889,892,895,898,903,906,928,933,936,945,950,953,977,980,1011,1014,1019,1022,1037,1042,1061,1064,1067,1072,1084,1089,1094,1097,1102,1105,1120,1123,1128,1133,1137,1142,1196,1199,1203,1209,1215,1220,1223,1230,1235,1242,1245,1248,1255,1270,1273,1336,1339,1354,1367,1457,1460,1463,1532,1535,1538,1541,1563,1566,1571,1576,1583,1588,1591,1595,1600,1605,1609,1612,1615,1658,1663,1666,1688,1703,1705,1710,1722,1782,1784,1786,1844,1846,1848,1851,1867,1872,1875,1880,1883,1886,1951,1956,1959,1961,1965,1977,2059,2061,2063,2121,2127,2129,2135,2140,2142,2147,2150,2171,2206,2210,2225,2229,2232,2235,2238,2241,2249,2252,2265,2268,2283,2286,2305,2354,2357,2377,2380,2394,2400,2403,2412,2428,2440,2480,2485,2513,2518,2523,2553,2557,2561,2564,2569,2574,2587,2599,2602,2607,2622,2629,2662,2667,2685,2688,2692,2695,2699,2702,2706,2709,2713,2722,2728,2733,2745,2750,2755,2760,2787,2790,2795,2806,2811,2817,2822,2825,2830,3040,3044,3049,3054,3058,3063,3075,3083,3086,3091,3095,3100,3105,3110,3116,3121,3126,3131,3134,3137,3143,3148,3153,3156,3160,3163,3166,3169,3172,3175,3181,3186,3189,3196,3203,3206,3209,3212,3242,3245,3249,3255,3260,3266,3271,3288,3320,3336,3339,3342,3348,3359,3364,3375,3385,3402,3407,3412,3415,3418,3421,3450,3453,3456,3505,3510,3513,3518,3521,3524,3529,3532,3537,3540,3543,3546,3549,3552,3557,3560,3563,3568,3573,3578,3582,3586,3589,3592,3603,3606,3609,3613,3616,3703,3706,3719,3725,3728,3732,3739,3747,3750,4158,4161,4164,4171,4174,4187,4190,4193,4199,4202,4214,4221,4224,4237,4244,4247,4250,4256,4259,4272,4279,4282,4296,4303,4306,4320,4323,4330,4333,4347,4352,4359,4362,4365,4394,4397,4413,4416,4419,4437,4440,4446,4448,4476,4479,4482,4487,4493,4496,4499,4516,4519,4525,4528,4534,4537,4540,4543,4546,4580,4583,4589,4598,4602],[10,11,12],"h3",{"id":12},"工控機如何連wifi",[14,15,16],"p",{},"當我們工控機從一個環境移動到另一個環境，且新的環境的wifi我們沒有連接過，我們沒有屏幕如何讓工控機連上網呢？",[14,18,19,20,24],{},"進入工控機的硬盤目錄，進入",[21,22,23],"code",{},"\u002Fetc\u002Fnetplan\u002F","，底下有很多yaml,找到一個最符合下方格式的yaml:",[26,27,32],"pre",{"className":28,"code":29,"language":30,"meta":31,"style":31},"language-YAML shiki shiki-themes github-light github-dark","network: \n  version: 2 \n  wifis: \n    NM-6f414fe0-2658-48ff-89ee-c7981b87bc96: \n      renderer: NetworkManager \n      match: \n        name: \"wlan0\" \n      dhcp4: true \n      dhcp6: true \n      access-points: \n        \"EMIS_Vinci_Robocon_5G\": \n          auth: \n            key-management: \"psk\" \n            password: \"vinci666\" \n          networkmanager: \n            uuid: \"6f414fe0-2658-48ff-89ee-c7981b87bc96\" \n            name: \"EMIS_Vinci_Robocon_5G\" \n            passthrough: \n              wifi-security.auth-alg: \"open\" \n              ipv6.addr-gen-mode: \"default\" \n              ipv6.ip6-privacy: \"-1\" \n              proxy._: \"\" \n      networkmanager: \n        uuid: \"6f414fe0-2658-48ff-89ee-c7981b87bc96\" \n        name: \"EMIS_Vinci_Robocon_5G\"\n\n","YAML","",[21,33,34,47,63,71,79,93,101,114,127,139,147,155,163,176,189,197,210,223,231,244,257,270,283,291,303],{"__ignoreMap":31},[35,36,39,43],"span",{"class":37,"line":38},"line",1,[35,40,42],{"class":41},"s9eBZ","network",[35,44,46],{"class":45},"sVt8B",": \n",[35,48,50,53,56,60],{"class":37,"line":49},2,[35,51,52],{"class":41},"  version",[35,54,55],{"class":45},": ",[35,57,59],{"class":58},"sj4cs","2",[35,61,62],{"class":45}," \n",[35,64,66,69],{"class":37,"line":65},3,[35,67,68],{"class":41},"  wifis",[35,70,46],{"class":45},[35,72,74,77],{"class":37,"line":73},4,[35,75,76],{"class":41},"    NM-6f414fe0-2658-48ff-89ee-c7981b87bc96",[35,78,46],{"class":45},[35,80,82,85,87,91],{"class":37,"line":81},5,[35,83,84],{"class":41},"      renderer",[35,86,55],{"class":45},[35,88,90],{"class":89},"sZZnC","NetworkManager",[35,92,62],{"class":45},[35,94,96,99],{"class":37,"line":95},6,[35,97,98],{"class":41},"      match",[35,100,46],{"class":45},[35,102,104,107,109,112],{"class":37,"line":103},7,[35,105,106],{"class":41},"        name",[35,108,55],{"class":45},[35,110,111],{"class":89},"\"wlan0\"",[35,113,62],{"class":45},[35,115,117,120,122,125],{"class":37,"line":116},8,[35,118,119],{"class":41},"      dhcp4",[35,121,55],{"class":45},[35,123,124],{"class":58},"true",[35,126,62],{"class":45},[35,128,130,133,135,137],{"class":37,"line":129},9,[35,131,132],{"class":41},"      dhcp6",[35,134,55],{"class":45},[35,136,124],{"class":58},[35,138,62],{"class":45},[35,140,142,145],{"class":37,"line":141},10,[35,143,144],{"class":41},"      access-points",[35,146,46],{"class":45},[35,148,150,153],{"class":37,"line":149},11,[35,151,152],{"class":89},"        \"EMIS_Vinci_Robocon_5G\"",[35,154,46],{"class":45},[35,156,158,161],{"class":37,"line":157},12,[35,159,160],{"class":41},"          auth",[35,162,46],{"class":45},[35,164,166,169,171,174],{"class":37,"line":165},13,[35,167,168],{"class":41},"            key-management",[35,170,55],{"class":45},[35,172,173],{"class":89},"\"psk\"",[35,175,62],{"class":45},[35,177,179,182,184,187],{"class":37,"line":178},14,[35,180,181],{"class":41},"            password",[35,183,55],{"class":45},[35,185,186],{"class":89},"\"vinci666\"",[35,188,62],{"class":45},[35,190,192,195],{"class":37,"line":191},15,[35,193,194],{"class":41},"          networkmanager",[35,196,46],{"class":45},[35,198,200,203,205,208],{"class":37,"line":199},16,[35,201,202],{"class":41},"            uuid",[35,204,55],{"class":45},[35,206,207],{"class":89},"\"6f414fe0-2658-48ff-89ee-c7981b87bc96\"",[35,209,62],{"class":45},[35,211,213,216,218,221],{"class":37,"line":212},17,[35,214,215],{"class":41},"            name",[35,217,55],{"class":45},[35,219,220],{"class":89},"\"EMIS_Vinci_Robocon_5G\"",[35,222,62],{"class":45},[35,224,226,229],{"class":37,"line":225},18,[35,227,228],{"class":41},"            passthrough",[35,230,46],{"class":45},[35,232,234,237,239,242],{"class":37,"line":233},19,[35,235,236],{"class":41},"              wifi-security.auth-alg",[35,238,55],{"class":45},[35,240,241],{"class":89},"\"open\"",[35,243,62],{"class":45},[35,245,247,250,252,255],{"class":37,"line":246},20,[35,248,249],{"class":41},"              ipv6.addr-gen-mode",[35,251,55],{"class":45},[35,253,254],{"class":89},"\"default\"",[35,256,62],{"class":45},[35,258,260,263,265,268],{"class":37,"line":259},21,[35,261,262],{"class":41},"              ipv6.ip6-privacy",[35,264,55],{"class":45},[35,266,267],{"class":89},"\"-1\"",[35,269,62],{"class":45},[35,271,273,276,278,281],{"class":37,"line":272},22,[35,274,275],{"class":41},"              proxy._",[35,277,55],{"class":45},[35,279,280],{"class":89},"\"\"",[35,282,62],{"class":45},[35,284,286,289],{"class":37,"line":285},23,[35,287,288],{"class":41},"      networkmanager",[35,290,46],{"class":45},[35,292,294,297,299,301],{"class":37,"line":293},24,[35,295,296],{"class":41},"        uuid",[35,298,55],{"class":45},[35,300,207],{"class":89},[35,302,62],{"class":45},[35,304,306,308,310],{"class":37,"line":305},25,[35,307,106],{"class":41},[35,309,55],{"class":45},[35,311,312],{"class":89},"\"EMIS_Vinci_Robocon_5G\"\n",[14,314,315],{},"將其改為新wifi的名和密碼：",[26,317,319],{"className":28,"code":318,"language":30,"meta":31,"style":31},"network:\n  version: 2\n  wifis:\n    wlan0:\n      dhcp4: true\n      dhcp6: true\n      access-points:\n        \"EMIS_Vinci_Robocon_5G\":\n          password: \"vinci666\"\n\n",[21,320,321,328,337,343,350,359,367,373,379],{"__ignoreMap":31},[35,322,323,325],{"class":37,"line":38},[35,324,42],{"class":41},[35,326,327],{"class":45},":\n",[35,329,330,332,334],{"class":37,"line":49},[35,331,52],{"class":41},[35,333,55],{"class":45},[35,335,336],{"class":58},"2\n",[35,338,339,341],{"class":37,"line":65},[35,340,68],{"class":41},[35,342,327],{"class":45},[35,344,345,348],{"class":37,"line":73},[35,346,347],{"class":41},"    wlan0",[35,349,327],{"class":45},[35,351,352,354,356],{"class":37,"line":81},[35,353,119],{"class":41},[35,355,55],{"class":45},[35,357,358],{"class":58},"true\n",[35,360,361,363,365],{"class":37,"line":95},[35,362,132],{"class":41},[35,364,55],{"class":45},[35,366,358],{"class":58},[35,368,369,371],{"class":37,"line":103},[35,370,144],{"class":41},[35,372,327],{"class":45},[35,374,375,377],{"class":37,"line":116},[35,376,152],{"class":89},[35,378,327],{"class":45},[35,380,381,384,386],{"class":37,"line":129},[35,382,383],{"class":41},"          password",[35,385,55],{"class":45},[35,387,388],{"class":89},"\"vinci666\"\n",[14,390,391],{},"工控機開機即可連上網。",[10,393,395],{"id":394},"ssh遠程開發","SSH遠程開發",[397,398,399],"h4",{"id":399},"環境準備",[14,401,402],{},[403,404,405],"strong",{},"1.硬件準備",[14,407,408],{},"首先要有一台工控機（X86小型電腦，專業工控機，樹莓派等等）。",[14,410,411],{},"控制系統的硬件載體是具有多樣性的，常用的多是基於ARM、x86等架構的處理器，比如：PC、工控機、樹莓派、NVIDIA Jetson...。不同的處理器都存在一定的優缺點，PC和工控機，處理器性能強大，但是功耗高、體積大、靈活性差，嵌入式系統則反之。對於我們而言，可以根據機器人平台的電氣、載重、空間以及用途等諸多要素自主選擇合適的控制系統。",[14,413,414],{},"無論選用何種處理器，只要是要進行機器人的開發，安裝了ROS或者ROS2，那麼對於開發人員而言，在使用上，沒有任何本質的區別，或者換言之，作為軟件工程師，部分場景下無需關注於硬件的選型。",[14,416,417],{},[403,418,419],{},"2.設置固定IP",[14,421,422],{},"遠程連接時，不管使用何種工具，需要根據IP地址定位到被連接的主機，再通過賬號和密碼登錄該主機，因此，我們需要先獲取該IP地址。並且每次連接時，都需要使用到IP，為了保證連接的便利性和穩定性，最好將被連接主機的IP地址設置為固定IP，具體操作如下。",[14,424,425],{},"1.進入設置界面",[14,427,428],{},"啓動被連接的主機（啓動時需要連接顯示器或使用HDMI採集卡，並且配置完SSH遠程訪問之後，可以不再使用顯示器或HDMI採集卡），並進入設置界面。",[14,430,431],{},[432,433],"img",{"alt":31,"src":434},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage332.webp",[14,436,437],{},"2.配置所連接的網絡",[14,439,440],{},[432,441],{"alt":31,"src":442},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage333.webp",[14,444,445],{},"3.設置固定IP",[14,447,448],{},"查看當前IP地址。",[14,450,451],{},[432,452],{"alt":31,"src":453},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage334.webp",[14,455,456],{},"設置固定IP。",[14,458,459],{},[432,460],{"alt":31,"src":461},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage335.webp",[14,463,464],{},"至此，IP配置完畢。",[397,466,467],{"id":467},"環境搭建",[14,469,470],{},[403,471,472],{},"概念",[14,474,475],{},"SSH（Secure Shell）是一種通用的、功能強大的、基於軟件的網絡安全解決方案。計算機每次向網絡發送數據時，SSH都會自動對其進行加密。數據到達目的地時，SSH自動對加密數據進行解密。整個過程都是透明的，使用OpenSSH工具將會增進你的系統安全性。SSH安裝容易、使用簡單。",[14,477,478],{},[403,479,480],{},"實現",[14,482,483],{},"SSH實現架構上分為客户端和服務器端兩大部分，客户端是數據的發送方，服務端是數據的接收方，當前場景下，我們需要從本地主機發送數據到遠程主機，那麼本地主機需要安裝並啓動SSH客户端，而遠程主機則需要安裝並啓動SSH服務端，整個實現具體流程如下：",[485,486,487,491,494,497],"ol",{},[488,489,490],"li",{},"本地主機安裝SSH客户端，遠程主機安裝SSH服務端；",[488,492,493],{},"遠程主機啓動SSH服務；",[488,495,496],{},"本地主機登陸遠程主機；",[488,498,499],{},"實現數據傳輸。",[14,501,502],{},"1.安裝SSH客户端與服務端",[14,504,505],{},"默認情況下，Ubuntu系統已經安裝了SSH客户端，因此只需要在遠程主機安裝SSH服務端即可，安裝命令如下：",[26,507,512],{"className":508,"code":509,"language":510,"meta":511,"style":31},"language-Plain shiki shiki-themes github-light github-dark"," sudo apt install openssh-server\n","Plain","Text",[21,513,514],{"__ignoreMap":31},[35,515,516],{"class":37,"line":38},[35,517,509],{},[14,519,520],{},"如果SSH客户端需要自行安裝，那麼調用如下命令:",[26,522,524],{"className":508,"code":523,"language":510,"meta":511,"style":31},"sudo apt install openssh-client\n",[21,525,526],{"__ignoreMap":31},[35,527,528],{"class":37,"line":38},[35,529,523],{},[14,531,532],{},"2.遠程主機啓動SSH服務",[14,534,535],{},"遠程主機啓動 ssh 服務命令如下：",[26,537,539],{"className":508,"code":538,"language":510,"meta":511,"style":31},"sudo \u002Fetc\u002Finit.d\u002Fssh start\n",[21,540,541],{"__ignoreMap":31},[35,542,543],{"class":37,"line":38},[35,544,538],{},[14,546,547],{},"啓動後可使用如下命令查看服務是否正常運行：",[26,549,551],{"className":508,"code":550,"language":510,"meta":511,"style":31},"ps -e | grep ssh\n",[21,552,553],{"__ignoreMap":31},[35,554,555],{"class":37,"line":38},[35,556,550],{},[14,558,559],{},"如果啓動成功，會包含 sshd 程序。",[14,561,562],{},"以後需要頻繁的使用ssh遠程登錄，為了簡化實現，可以將遠程主機的ssh服務設置為開機自啓動，命令如下：",[26,564,566],{"className":508,"code":565,"language":510,"meta":511,"style":31},"sudo systemctl enable ssh\n",[21,567,568],{"__ignoreMap":31},[35,569,570],{"class":37,"line":38},[35,571,565],{},[14,573,574],{},"3.本地遠程登錄",[14,576,577],{},"登錄遠程主機可以調用如下命令:",[26,579,583],{"className":580,"code":581,"language":582,"meta":31,"style":31},"language-bash shiki shiki-themes github-light github-dark","ssh -X 用户名@ip地址\n","bash",[21,584,585],{"__ignoreMap":31},[35,586,587,591,594],{"class":37,"line":38},[35,588,590],{"class":589},"sScJk","ssh",[35,592,593],{"class":58}," -X",[35,595,596],{"class":89}," 用户名@ip地址\n",[14,598,599],{},"然後根據提示，錄入登陸密碼，即可成功登錄。",[14,601,602],{},"如果退出，可以調用exit命令：",[26,604,606],{"className":508,"code":605,"language":510,"meta":511,"style":31},"exit\n",[21,607,608],{"__ignoreMap":31},[35,609,610],{"class":37,"line":38},[35,611,605],{},[14,613,614],{},[403,615,616],{},"4.實現數據傳輸",[14,618,619],{},"通過SSH在本地主機只需調用相關指令，便可方便的實現與遠程主機的數據上傳或下載，指令格式如下所示：",[14,621,622],{},"上傳文件指令格式如下：",[26,624,626],{"className":508,"code":625,"language":510,"meta":511,"style":31},"scp 本地文件路径 账号@ip:路径\n",[21,627,628],{"__ignoreMap":31},[35,629,630],{"class":37,"line":38},[35,631,625],{},[14,633,634],{},"上傳文件夾指令格式如下：",[26,636,638],{"className":508,"code":637,"language":510,"meta":511,"style":31},"scp -r 本地文件夹路径 账号@ip:路径\n",[21,639,640],{"__ignoreMap":31},[35,641,642],{"class":37,"line":38},[35,643,637],{},[14,645,646],{},"下載文件指令格式如下：",[26,648,650],{"className":508,"code":649,"language":510,"meta":511,"style":31},"scp 账号@ip:路径 本地文件夹路径\n",[21,651,652],{"__ignoreMap":31},[35,653,654],{"class":37,"line":38},[35,655,649],{},[14,657,658],{},"下載文件夾指令格式如下：",[26,660,662],{"className":508,"code":661,"language":510,"meta":511,"style":31},"scp -r 账号@ip:路径 本地文件夹路径\n",[21,663,664],{"__ignoreMap":31},[35,665,666],{"class":37,"line":38},[35,667,661],{},[14,669,670],{},[403,671,672],{},"優化",[14,674,675],{},"每次遠程登錄時，都需要輸入密碼，使用不方便，可以藉助密鑰簡化登錄過程，實現免密登錄，提高操作效率。實現思想是：生成一對公鑰私鑰，私鑰存儲在本地，公鑰上傳至服務器，每次登錄時，本地直接上傳私鑰到服務器，服務器有匹配的公鑰就認為是合法用户，直接創建SSH連接即可。具體實現步驟只有兩步：",[485,677,678,681],{},[488,679,680],{},"本地生成密鑰對；",[488,682,683],{},"將公鑰上傳至遠程主機。",[14,685,686],{},[403,687,688],{},"1.生成密鑰對",[14,690,691],{},"本地客户端生成公私鑰：（一路回車默認即可）",[26,693,695],{"className":508,"code":694,"language":510,"meta":511,"style":31},"ssh-keygen\n",[21,696,697],{"__ignoreMap":31},[35,698,699],{"class":37,"line":38},[35,700,694],{},[14,702,703],{},"上面這個命令會在用户目錄.ssh文件夾下創建公私鑰：",[485,705,706,709],{},[488,707,708],{},"id_rsa （私鑰）；",[488,710,711],{},"id_rsa.pub (公鑰)。",[14,713,714],{},[403,715,716],{},"2.公鑰上傳",[14,718,719],{},"上傳指令如下：",[26,721,723],{"className":508,"code":722,"language":510,"meta":511,"style":31},"ssh-copy-id -i ~\u002F.ssh\u002Fid_rsa.pub 账号@ip\n",[21,724,725],{"__ignoreMap":31},[35,726,727],{"class":37,"line":38},[35,728,722],{},[14,730,731],{},"上面這條指令是將本地公鑰上傳到遠程主機的ssh目錄下，該目錄下有文件authorized_keys保存了公鑰內容。",[14,733,734],{},"以後再遠程登錄就無需錄入密碼了。",[397,736,738],{"id":737},"使用vscode優化","使用VScode優化",[14,740,741],{},"上一節，我們介紹了ssh遠程連接的使用，但是如果只是純粹使用ssh也存在一些不足，比如：編輯文件內容時，需要使用vi編輯器，且在一個終端內，無法同時編輯多個文件。本節將介紹一更為實用的功能——VSCode結合插件實現遠程開發，這使我們可以以圖形化的方式實現遠程開發，比ssh的使用更方便快捷，可以大大的提高程序開發效率。",[14,743,744],{},[403,745,746],{},"1.準備工作",[14,748,749],{},"VScode遠程開發依賴於ssh，請首先按照上一節內容配置ssh遠程連接。",[14,751,752],{},[403,753,754],{},"2.為VScode安裝遠程開發插件",[14,756,757,758,761,762,765,766,769],{},"啓動VScode，首先點擊側邊欄的擴展按鈕，然後在",[21,759,760],{},"扩展：商店","的搜索欄輸入",[21,763,764],{},"Remote Development","並點擊同名插件，最後在右側顯示區中點擊",[21,767,768],{},"安装","。",[14,771,772],{},[432,773],{"alt":31,"src":774},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage336.webp",[14,776,777],{},[403,778,779],{},"3.配置遠程連接",[14,781,782,783,786,787,790],{},"步驟1：使用快捷鍵",[21,784,785],{},"ctrl + shift + p","打開命令輸入窗口，並輸入",[21,788,789],{},"Remote-SSH:Connect to Host...","，彈出列表中選擇與之同名的選項。",[14,792,793],{},[432,794],{"alt":31,"src":795},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage337.webp",[14,797,798,799,769],{},"步驟2：步驟1完成將彈出一個新的命令窗口如下，選擇下拉列表中的 ",[21,800,801],{},"Add New SSH Host",[14,803,804],{},[432,805],{"alt":31,"src":806},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage338.webp",[14,808,809,810,813,814,817,818,821],{},"步驟3：步驟2完成又將彈出一個新的命令窗口，在其中輸入：",[21,811,812],{},"ssh -X ubuntu@192.168.43.164","，其中，",[21,815,816],{},"ubuntu","需要替換為你的登錄用户名，",[21,819,820],{},"192.18.43.164"," 則替換為被遠程連接主機的ip地址。",[14,823,824],{},[432,825],{"alt":31,"src":826},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage339.webp",[14,828,829],{},"步驟4：選擇步驟3完成後的彈窗列表中的第一個選項(或直接回車)，即可完成配置，配置成功後會有提示信息。",[14,831,832],{},[432,833],{"alt":31,"src":834},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage340.webp",[14,836,837],{},[432,838],{"alt":31,"src":839},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage341.webp",[14,841,842],{},[403,843,844],{},"4.使用",[14,846,847,848,786,850,852],{},"步驟1：繼續使用快捷鍵",[21,849,785],{},[21,851,789],{},"，此時列表中將顯示步驟3中配置的ip地址，直接選擇，選擇後，VScode將打開一個新的窗口。",[14,854,855],{},[432,856],{"alt":31,"src":857},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage342.webp",[14,859,860,861,864],{},"或者，也可以點擊側邊欄的",[21,862,863],{},"远程资源管理器","，在彈出的服務器列表中選擇要連接的服務器，並右擊，選擇在本窗口或新窗口中實現遠程連接。",[14,866,867],{},[432,868],{"alt":31,"src":869},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage343.webp",[14,871,872,873,876,877,880],{},"步驟2：選擇菜單欄的",[21,874,875],{},"文件","下的",[21,878,879],{},"打开文件夹","，在彈窗列表中選擇需要打開的文件夾並點擊確定即可。",[14,882,883],{},[432,884],{"alt":31,"src":885},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage344.webp",[14,887,888],{},"最終，我們就可以像操作本地文件一樣實現遠程開發了。",[10,890,891],{"id":891},"遠程桌面",[14,893,894],{},"因為用X11轉發效率太低太低，所以還是要選用遠程訪問桌面的形式來看Rviz2和Gazebo等等（如果有需求的話）",[14,896,897],{},"我們選擇使用VNC來看。",[485,899,900],{},[488,901,902],{},"安裝VNC服務器：",[14,904,905],{},"這裏以TigerVNC為例進行安裝：",[26,907,909],{"className":580,"code":908,"language":582,"meta":31,"style":31},"sudo apt install tigervnc-standalone-server tigervnc-common\n",[21,910,911],{"__ignoreMap":31},[35,912,913,916,919,922,925],{"class":37,"line":38},[35,914,915],{"class":589},"sudo",[35,917,918],{"class":89}," apt",[35,920,921],{"class":89}," install",[35,923,924],{"class":89}," tigervnc-standalone-server",[35,926,927],{"class":89}," tigervnc-common\n",[485,929,930],{"start":49},[488,931,932],{},"設置VNC密碼：",[14,934,935],{},"為VNC用户設置密碼，運行以下命令：",[26,937,939],{"className":580,"code":938,"language":582,"meta":31,"style":31},"vncpasswd\n",[21,940,941],{"__ignoreMap":31},[35,942,943],{"class":37,"line":38},[35,944,938],{"class":589},[485,946,947],{"start":65},[488,948,949],{},"配置VNC啓動腳本:",[14,951,952],{},"創建VNC配置文件，在用户家目錄內的.vnc文件夾中創建啓動文件：",[26,954,956],{"className":580,"code":955,"language":582,"meta":31,"style":31},"mkdir -p ~\u002F.vnc\nnano ~\u002F.vnc\u002Fxstartup\n",[21,957,958,969],{"__ignoreMap":31},[35,959,960,963,966],{"class":37,"line":38},[35,961,962],{"class":589},"mkdir",[35,964,965],{"class":58}," -p",[35,967,968],{"class":89}," ~\u002F.vnc\n",[35,970,971,974],{"class":37,"line":49},[35,972,973],{"class":589},"nano",[35,975,976],{"class":89}," ~\u002F.vnc\u002Fxstartup\n",[14,978,979],{},"在打開的編輯器裏面輸入以下內容（以GNOME為例）：",[26,981,983],{"className":580,"code":982,"language":582,"meta":31,"style":31},"#!\u002Fbin\u002Fsh\nunset SESSION_MANAGER\nunset DBUS_SESSION_BUS_ADDRESS\ngnome-session\n",[21,984,985,991,999,1006],{"__ignoreMap":31},[35,986,987],{"class":37,"line":38},[35,988,990],{"class":989},"sJ8bj","#!\u002Fbin\u002Fsh\n",[35,992,993,996],{"class":37,"line":49},[35,994,995],{"class":58},"unset",[35,997,998],{"class":89}," SESSION_MANAGER\n",[35,1000,1001,1003],{"class":37,"line":65},[35,1002,995],{"class":58},[35,1004,1005],{"class":89}," DBUS_SESSION_BUS_ADDRESS\n",[35,1007,1008],{"class":37,"line":73},[35,1009,1010],{"class":589},"gnome-session\n",[14,1012,1013],{},"保存並退出（在nano中按Ctrl + O保存，然後按Ctrl + X退出）。",[485,1015,1016],{"start":73},[488,1017,1018],{},"給予執行權限：",[14,1020,1021],{},"為xstartup文件設置執行權限：",[26,1023,1025],{"className":580,"code":1024,"language":582,"meta":31,"style":31},"chmod +x ~\u002F.vnc\u002Fxstartup\n",[21,1026,1027],{"__ignoreMap":31},[35,1028,1029,1032,1035],{"class":37,"line":38},[35,1030,1031],{"class":589},"chmod",[35,1033,1034],{"class":89}," +x",[35,1036,976],{"class":89},[485,1038,1039],{"start":81},[488,1040,1041],{},"啓動VNC服務器：",[26,1043,1045],{"className":580,"code":1044,"language":582,"meta":31,"style":31},"vncserver -geometry 1920x1080 -localhost=0\n",[21,1046,1047],{"__ignoreMap":31},[35,1048,1049,1052,1055,1058],{"class":37,"line":38},[35,1050,1051],{"class":589},"vncserver",[35,1053,1054],{"class":58}," -geometry",[35,1056,1057],{"class":89}," 1920x1080",[35,1059,1060],{"class":58}," -localhost=0\n",[14,1062,1063],{},"geometry 選項指定窗口大小，localhost 選項設為 0 以開放連接。(設為1是隻允許本地連接)",[14,1065,1066],{},"你將看到類似於:1的輸出，這表示VNC會話的顯示編號。例如，如果輸出為:1，則VNC監聽的端口為5901（5900 + 顯示編號）。",[485,1068,1069],{"start":95},[488,1070,1071],{},"查看已開啓的VNC服務器：",[26,1073,1075],{"className":580,"code":1074,"language":582,"meta":31,"style":31},"vncserver -list\n",[21,1076,1077],{"__ignoreMap":31},[35,1078,1079,1081],{"class":37,"line":38},[35,1080,1051],{"class":589},[35,1082,1083],{"class":58}," -list\n",[14,1085,1086],{},[432,1087],{"alt":31,"src":1088},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage345.webp",[485,1090,1091],{"start":103},[488,1092,1093],{},"連接到VNC服務器：",[14,1095,1096],{},"使用VNC客户端（如vncviewer）連接到VNC服務器，輸入你的服務器IP和端口。例如，如果服務器IP為192.168.31.10，且顯示編號為1，你應該連接到192.168.31.10:1，或者直接輸入192.168.31.10:5901。",[485,1098,1099],{"start":116},[488,1100,1101],{},"停止VNC服務器：",[14,1103,1104],{},"如果需要停止VNC服務器，可以使用以下命令：",[26,1106,1108],{"className":580,"code":1107,"language":582,"meta":31,"style":31},"vncserver -kill :1\n",[21,1109,1110],{"__ignoreMap":31},[35,1111,1112,1114,1117],{"class":37,"line":38},[35,1113,1051],{"class":589},[35,1115,1116],{"class":58}," -kill",[35,1118,1119],{"class":89}," :1\n",[14,1121,1122],{},"將:1替換為你實際使用的顯示編號。",[14,1124,1125],{},[432,1126],{"alt":31,"src":1127},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage346.webp",[14,1129,1130],{},[432,1131],{"alt":31,"src":1132},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage347.webp",[10,1134,1136],{"id":1135},"usb端口設置","USB端口設置",[14,1138,1139],{},[403,1140,1141],{},"首先先配置好權限",[26,1143,1145],{"className":580,"code":1144,"language":582,"meta":31,"style":31},"\n# 将用户权限提高\nsudo usermod -aG dialout $USER\nnewgrp dialout\n\n# 查看下面命令是否输出dialout（若输出才正常）\ngroups\n",[21,1146,1147,1153,1158,1174,1182,1186,1191],{"__ignoreMap":31},[35,1148,1149],{"class":37,"line":38},[35,1150,1152],{"emptyLinePlaceholder":1151},true,"\n",[35,1154,1155],{"class":37,"line":49},[35,1156,1157],{"class":989},"# 将用户权限提高\n",[35,1159,1160,1162,1165,1168,1171],{"class":37,"line":65},[35,1161,915],{"class":589},[35,1163,1164],{"class":89}," usermod",[35,1166,1167],{"class":58}," -aG",[35,1169,1170],{"class":89}," dialout",[35,1172,1173],{"class":45}," $USER\n",[35,1175,1176,1179],{"class":37,"line":73},[35,1177,1178],{"class":589},"newgrp",[35,1180,1181],{"class":89}," dialout\n",[35,1183,1184],{"class":37,"line":81},[35,1185,1152],{"emptyLinePlaceholder":1151},[35,1187,1188],{"class":37,"line":95},[35,1189,1190],{"class":989},"# 查看下面命令是否输出dialout（若输出才正常）\n",[35,1192,1193],{"class":37,"line":103},[35,1194,1195],{"class":589},"groups\n",[14,1197,1198],{},"因為我們插拔USB設備，他的端口號可能會一直變，所以我們要給他的tty起一個固定的別名。",[397,1200,1202],{"id":1201},"根據usb設備綁定端口多個不同設備","根據USB設備綁定端口(多個不同設備)",[14,1204,1205,1208],{},[403,1206,1207],{},"需求："," Ubuntu系統中現接入雷達和智能小車，請為二者綁定端口。",[14,1210,1211,1214],{},[403,1212,1213],{},"實現原理："," 可以通過USB設備本身的“標識”實現端口綁定。",[14,1216,1217],{},[403,1218,1219],{},"流程如下：",[14,1221,1222],{},"（1）.查找設備idVendor和idProduct",[14,1224,1225,1226,1229],{},"接入兩個USB設備，在終端調用指令",[21,1227,1228],{},"lsusb","查看顯示系統中以及連接到系統的USB設備信息。",[14,1231,1232],{},[432,1233],{"alt":31,"src":1234},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage348.webp",[14,1236,1237,1238,1241],{},"如上圖所示，紅色方框內數據為USB設備，ID後面的",[21,1239,1240],{},"1a86:7523","分別為USB的idVendor和idProduct（兩個參數之間使用”：“分隔）。",[14,1243,1244],{},"另外：可以通過重新插拔比較的方式確定哪些數據對應接入的USB設備。",[14,1246,1247],{},"（2）.編寫映射規則",[14,1249,1250,1251,1254],{},"在",[21,1252,1253],{},"\u002Fetc\u002Fudev\u002Frules.d","目錄下新建文件xxx.rules（文件名自定義）",[26,1256,1258],{"className":580,"code":1257,"language":582,"meta":31,"style":31},"sudo vim \u002Fetc\u002Fudev\u002Frules.d\u002Fxxx.rules\n",[21,1259,1260],{"__ignoreMap":31},[35,1261,1262,1264,1267],{"class":37,"line":38},[35,1263,915],{"class":589},[35,1265,1266],{"class":89}," vim",[35,1268,1269],{"class":89}," \u002Fetc\u002Fudev\u002Frules.d\u002Fxxx.rules\n",[14,1271,1272],{},"輸入如下內容：",[26,1274,1276],{"className":580,"code":1275,"language":582,"meta":31,"style":31},"KERNEL==\"ttyUSB*\", ATTRS{idVendor}==\"10c4\", ATTRS{idProduct}==\"ea60\", MODE:=\"0777\", SYMLINK+=\"mylidar\"\nKERNEL==\"ttyUSB*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"7523\", MODE:=\"0777\", SYMLINK+=\"mycar\"\n",[21,1277,1278,1311],{"__ignoreMap":31},[35,1279,1280,1283,1287,1290,1293,1296,1299,1302,1305,1308],{"class":37,"line":38},[35,1281,1282],{"class":45},"KERNEL",[35,1284,1286],{"class":1285},"szBVR","=",[35,1288,1289],{"class":89},"=\"ttyUSB*\",",[35,1291,1292],{"class":589}," ATTRS",[35,1294,1295],{"class":89},"{idVendor}==",[35,1297,1298],{"class":589},"\"10c4\"",[35,1300,1301],{"class":589},",",[35,1303,1304],{"class":89}," ATTRS{idProduct}==\"ea60\",",[35,1306,1307],{"class":89}," MODE:=\"0777\",",[35,1309,1310],{"class":89}," SYMLINK+=\"mylidar\"\n",[35,1312,1313,1315,1317,1319,1321,1323,1326,1328,1331,1333],{"class":37,"line":49},[35,1314,1282],{"class":45},[35,1316,1286],{"class":1285},[35,1318,1289],{"class":89},[35,1320,1292],{"class":589},[35,1322,1295],{"class":89},[35,1324,1325],{"class":589},"\"1a86\"",[35,1327,1301],{"class":589},[35,1329,1330],{"class":89}," ATTRS{idProduct}==\"7523\",",[35,1332,1307],{"class":89},[35,1334,1335],{"class":89}," SYMLINK+=\"mycar\"\n",[14,1337,1338],{},"代碼解釋：",[1340,1341,1342,1345,1348,1351],"ul",{},[488,1343,1344],{},"KERNEL是內核固定名稱，這裏統一是“ttyUSB*”；",[488,1346,1347],{},"MODE是節點權限，通常改為“0777”，表示可讀寫可運行；",[488,1349,1350],{},"SYMLINK是符號連接，即綁定的別名；",[488,1352,1353],{},"ATTRS是設備廠商的唯一標識，idVendor和idProduct正好組成上面通過lsusb查找到的設備ID。",[14,1355,1356,1357,1361,1364],{},"***小提示：***",[1358,1359,1360],"em",{},"一般的USB設備供應商都會提供類似的腳本文件，對於調用者而言，直接複製該文件到",[21,1362,1363],{},"\u002Fetc\u002Fudev\u002Frule.d",[1358,1365,1366],{},"目錄即可。",[1368,1369,1370,1387],"table",{},[1371,1372,1373],"thead",{},[1374,1375,1376,1381,1384],"tr",{},[1377,1378,1380],"th",{"align":1379},"left","設備類型",[1377,1382,1383],{"align":1379},"內核名稱示例",[1377,1385,1386],{"align":1379},"説明",[1388,1389,1390,1402,1413,1424,1435,1446],"tbody",{},[1374,1391,1392,1396,1399],{},[1393,1394,1395],"td",{"align":1379},"USB 串口設備",[1393,1397,1398],{"align":1379},"ttyUSB*",[1393,1400,1401],{"align":1379},"USB 轉串口設備，如 \u002Fdev\u002FttyUSB0",[1374,1403,1404,1407,1410],{},[1393,1405,1406],{"align":1379},"串口設備",[1393,1408,1409],{"align":1379},"ttyS*",[1393,1411,1412],{"align":1379},"物理串口設備，如 \u002Fdev\u002FttyS0",[1374,1414,1415,1418,1421],{},[1393,1416,1417],{"align":1379},"存儲設備",[1393,1419,1420],{"align":1379},"sd*",[1393,1422,1423],{"align":1379},"SCSI 磁盤設備，如 \u002Fdev\u002Fsda",[1374,1425,1426,1429,1432],{},[1393,1427,1428],{"align":1379},"網絡設備",[1393,1430,1431],{"align":1379},"eth*",[1393,1433,1434],{"align":1379},"以太網設備，如 \u002Fdev\u002Feth0",[1374,1436,1437,1440,1443],{},[1393,1438,1439],{"align":1379},"輸入設備",[1393,1441,1442],{"align":1379},"event*",[1393,1444,1445],{"align":1379},"輸入事件設備，如 \u002Fdev\u002Finput\u002Fevent0",[1374,1447,1448,1451,1454],{},[1393,1449,1450],{"align":1379},"藍牙設備",[1393,1452,1453],{"align":1379},"rfcomm*",[1393,1455,1456],{"align":1379},"藍牙串口設備，如 \u002Fdev\u002Frfcomm0",[14,1458,1459],{},"（3）.使規則生效",[14,1461,1462],{},"在終端下輸入如下指令：",[26,1464,1466],{"className":580,"code":1465,"language":582,"meta":31,"style":31},"\n# Ubuntu用下方命令\nsudo service udev reload\nsudo service udev restart\n\n#Fedora用下方命令\nsudo udevadm control --reload\nsudo udevadm trigger\n",[21,1467,1468,1472,1477,1490,1501,1505,1510,1523],{"__ignoreMap":31},[35,1469,1470],{"class":37,"line":38},[35,1471,1152],{"emptyLinePlaceholder":1151},[35,1473,1474],{"class":37,"line":49},[35,1475,1476],{"class":989},"# Ubuntu用下方命令\n",[35,1478,1479,1481,1484,1487],{"class":37,"line":65},[35,1480,915],{"class":589},[35,1482,1483],{"class":89}," service",[35,1485,1486],{"class":89}," udev",[35,1488,1489],{"class":89}," reload\n",[35,1491,1492,1494,1496,1498],{"class":37,"line":73},[35,1493,915],{"class":589},[35,1495,1483],{"class":89},[35,1497,1486],{"class":89},[35,1499,1500],{"class":89}," restart\n",[35,1502,1503],{"class":37,"line":81},[35,1504,1152],{"emptyLinePlaceholder":1151},[35,1506,1507],{"class":37,"line":95},[35,1508,1509],{"class":989},"#Fedora用下方命令\n",[35,1511,1512,1514,1517,1520],{"class":37,"line":103},[35,1513,915],{"class":589},[35,1515,1516],{"class":89}," udevadm",[35,1518,1519],{"class":89}," control",[35,1521,1522],{"class":58}," --reload\n",[35,1524,1525,1527,1529],{"class":37,"line":116},[35,1526,915],{"class":589},[35,1528,1516],{"class":89},[35,1530,1531],{"class":89}," trigger\n",[14,1533,1534],{},"再重新插拔設備即可。",[14,1536,1537],{},"（4）.測試",[14,1539,1540],{},"終端下輸入如下指令",[26,1542,1544],{"className":580,"code":1543,"language":582,"meta":31,"style":31},"ll \u002Fdev | grep ttyUSB\n",[21,1545,1546],{"__ignoreMap":31},[35,1547,1548,1551,1554,1557,1560],{"class":37,"line":38},[35,1549,1550],{"class":589},"ll",[35,1552,1553],{"class":89}," \u002Fdev",[35,1555,1556],{"class":1285}," |",[35,1558,1559],{"class":589}," grep",[35,1561,1562],{"class":89}," ttyUSB\n",[14,1564,1565],{},"運行結果如下：",[14,1567,1568],{},[432,1569],{"alt":31,"src":1570},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage349.webp",[14,1572,1573],{},[432,1574],{"alt":31,"src":1575},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage350.webp",[14,1577,1578,1579,1582],{},"也可以多次插拔USB設備，會發現設備端口",[21,1580,1581],{},"ttyUSBn","中的n編號會變動，但是別名是始終可以指向對應的USB設備的。至此，就可以使用別名來關聯所需使用的USB設備了。",[14,1584,1585],{},[403,1586,1587],{},"缺點：",[14,1589,1590],{},"上述實現也存在一定的侷限性，當Ubuntu接入兩台或多台相同型號的USB設備時，由於設備ID是一樣的，該種實現方式只會對其中的一台設備生效，這種情況下，就需要通過第二種策略來實現端口的綁定了。",[397,1592,1594],{"id":1593},"根據主機硬件綁定端口多個相同設備","根據主機硬件綁定端口（多個相同設備)",[14,1596,1597,1599],{},[403,1598,1207],{}," 無人車中現接入一前一後兩台相同型號的雷達，請為二者綁定端口。",[14,1601,1602,1604],{},[403,1603,1213],{}," USB設備所連接主機的USB接口也是有其“標識”的，可以通過這個標識實現端口綁定。",[14,1606,1607],{},[403,1608,1219],{},[14,1610,1611],{},"（1）.查看所連接的主機USB接口的KERNELS",[14,1613,1614],{},"調用如下指令查看第一台雷達的USB信息：",[26,1616,1618],{"className":580,"code":1617,"language":582,"meta":31,"style":31},"udevadm info --attribute-walk --name=\u002Fdev\u002FttyUSB0 | grep KERNELS\nudevadm info --attribute-walk --name=\u002Fdev\u002FttyACM0 | grep KERNELS\n",[21,1619,1620,1641],{"__ignoreMap":31},[35,1621,1622,1625,1628,1631,1634,1636,1638],{"class":37,"line":38},[35,1623,1624],{"class":589},"udevadm",[35,1626,1627],{"class":89}," info",[35,1629,1630],{"class":58}," --attribute-walk",[35,1632,1633],{"class":58}," --name=\u002Fdev\u002FttyUSB0",[35,1635,1556],{"class":1285},[35,1637,1559],{"class":589},[35,1639,1640],{"class":89}," KERNELS\n",[35,1642,1643,1645,1647,1649,1652,1654,1656],{"class":37,"line":49},[35,1644,1624],{"class":589},[35,1646,1627],{"class":89},[35,1648,1630],{"class":58},[35,1650,1651],{"class":58}," --name=\u002Fdev\u002FttyACM0",[35,1653,1556],{"class":1285},[35,1655,1559],{"class":589},[35,1657,1640],{"class":89},[14,1659,1660],{},[432,1661],{"alt":31,"src":1662},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage351.webp",[14,1664,1665],{},"調用如下指令查看第二台雷達的USB信息：",[26,1667,1669],{"className":580,"code":1668,"language":582,"meta":31,"style":31},"udevadm info --attribute-walk --name=\u002Fdev\u002FttyUSB1 | grep KERNELS\n",[21,1670,1671],{"__ignoreMap":31},[35,1672,1673,1675,1677,1679,1682,1684,1686],{"class":37,"line":38},[35,1674,1624],{"class":589},[35,1676,1627],{"class":89},[35,1678,1630],{"class":58},[35,1680,1681],{"class":58}," --name=\u002Fdev\u002FttyUSB1",[35,1683,1556],{"class":1285},[35,1685,1559],{"class":589},[35,1687,1640],{"class":89},[14,1689,1690,1691,1694,1695,1698,1699,1702],{},"運行結果相比較不同的KERNELS，第一台雷達端口地址為",[21,1692,1693],{},"KERNELS==1-1.3:1.0","，第二個雷達端口地址為",[21,1696,1697],{},"KERNELS==1-1.4:1.0","。可以使用此數據作為不同端口的“",[403,1700,1701],{},"唯一性標識","”。",[14,1704,1247],{},[14,1706,1250,1707,1709],{},[21,1708,1253],{},"目錄下新建文件xxx.rules（文件名自定義），輸入如下內容：",[26,1711,1712],{"className":580,"code":1257,"language":582,"meta":31,"style":31},[21,1713,1714],{"__ignoreMap":31},[35,1715,1716,1718,1720],{"class":37,"line":38},[35,1717,915],{"class":589},[35,1719,1266],{"class":89},[35,1721,1269],{"class":89},[26,1723,1725],{"className":580,"code":1724,"language":582,"meta":31,"style":31},"KERNEL==\"ttyUSB*\", KERNELS==\"1-1.3:1.0\", MODE:=\"0777\", SYMLINK+=\"rplidar_front\"\nKERNEL==\"ttyUSB*\", KERNELS==\"1-1.4:1.0\", MODE:=\"0777\", SYMLINK+=\"rplidar_back\"\n",[21,1726,1727,1756],{"__ignoreMap":31},[35,1728,1729,1731,1733,1735,1738,1740,1743,1746,1748,1751,1753],{"class":37,"line":38},[35,1730,1282],{"class":45},[35,1732,1286],{"class":1285},[35,1734,1289],{"class":89},[35,1736,1737],{"class":45}," KERNELS",[35,1739,1286],{"class":1285},[35,1741,1742],{"class":89},"=\"1-1.3:1.0\",",[35,1744,1745],{"class":589}," MODE:",[35,1747,1286],{"class":89},[35,1749,1750],{"class":589},"\"0777\"",[35,1752,1301],{"class":589},[35,1754,1755],{"class":89}," SYMLINK+=\"rplidar_front\"\n",[35,1757,1758,1760,1762,1764,1766,1768,1771,1773,1775,1777,1779],{"class":37,"line":49},[35,1759,1282],{"class":45},[35,1761,1286],{"class":1285},[35,1763,1289],{"class":89},[35,1765,1737],{"class":45},[35,1767,1286],{"class":1285},[35,1769,1770],{"class":89},"=\"1-1.4:1.0\",",[35,1772,1745],{"class":589},[35,1774,1286],{"class":89},[35,1776,1750],{"class":589},[35,1778,1301],{"class":589},[35,1780,1781],{"class":89}," SYMLINK+=\"rplidar_back\"\n",[14,1783,1459],{},[14,1785,1462],{},[26,1787,1788],{"className":580,"code":1465,"language":582,"meta":31,"style":31},[21,1789,1790,1794,1798,1808,1818,1822,1826,1836],{"__ignoreMap":31},[35,1791,1792],{"class":37,"line":38},[35,1793,1152],{"emptyLinePlaceholder":1151},[35,1795,1796],{"class":37,"line":49},[35,1797,1476],{"class":989},[35,1799,1800,1802,1804,1806],{"class":37,"line":65},[35,1801,915],{"class":589},[35,1803,1483],{"class":89},[35,1805,1486],{"class":89},[35,1807,1489],{"class":89},[35,1809,1810,1812,1814,1816],{"class":37,"line":73},[35,1811,915],{"class":589},[35,1813,1483],{"class":89},[35,1815,1486],{"class":89},[35,1817,1500],{"class":89},[35,1819,1820],{"class":37,"line":81},[35,1821,1152],{"emptyLinePlaceholder":1151},[35,1823,1824],{"class":37,"line":95},[35,1825,1509],{"class":989},[35,1827,1828,1830,1832,1834],{"class":37,"line":103},[35,1829,915],{"class":589},[35,1831,1516],{"class":89},[35,1833,1519],{"class":89},[35,1835,1522],{"class":58},[35,1837,1838,1840,1842],{"class":37,"line":116},[35,1839,915],{"class":589},[35,1841,1516],{"class":89},[35,1843,1531],{"class":89},[14,1845,1534],{},[14,1847,1537],{},[14,1849,1850],{},"終端下輸入如下指令，運行結果如下：",[26,1852,1853],{"className":580,"code":1543,"language":582,"meta":31,"style":31},[21,1854,1855],{"__ignoreMap":31},[35,1856,1857,1859,1861,1863,1865],{"class":37,"line":38},[35,1858,1550],{"class":589},[35,1860,1553],{"class":89},[35,1862,1556],{"class":1285},[35,1864,1559],{"class":589},[35,1866,1562],{"class":89},[14,1868,1869],{},[432,1870],{"alt":31,"src":1871},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage352.webp",[14,1873,1874],{},"至此，就可以使用別名來關聯所需使用的USB設備了。",[14,1876,1877,1879],{},[403,1878,1587],{}," USB設備必須連接在主機的指定端口上，否則，會導致端口綁定失敗，或產生邏輯錯誤。(而且增加新設備可能會導致端口改變)",[397,1881,1882],{"id":1882},"根據其他屬性綁定端口",[14,1884,1885],{},"（1）.查看所連接的主機USB接口的信息",[26,1887,1889],{"className":580,"code":1888,"language":582,"meta":31,"style":31},"udevadm info -a -p $(udevadm info -q path -n \u002Fdev\u002FttyACM0)\nudevadm info -a -p $(udevadm info -q path -n \u002Fdev\u002FttyUSB0)\n",[21,1890,1891,1924],{"__ignoreMap":31},[35,1892,1893,1895,1897,1900,1902,1905,1907,1909,1912,1915,1918,1921],{"class":37,"line":38},[35,1894,1624],{"class":589},[35,1896,1627],{"class":89},[35,1898,1899],{"class":58}," -a",[35,1901,965],{"class":58},[35,1903,1904],{"class":45}," $(",[35,1906,1624],{"class":589},[35,1908,1627],{"class":89},[35,1910,1911],{"class":58}," -q",[35,1913,1914],{"class":89}," path",[35,1916,1917],{"class":58}," -n",[35,1919,1920],{"class":89}," \u002Fdev\u002FttyACM0",[35,1922,1923],{"class":45},")\n",[35,1925,1926,1928,1930,1932,1934,1936,1938,1940,1942,1944,1946,1949],{"class":37,"line":49},[35,1927,1624],{"class":589},[35,1929,1627],{"class":89},[35,1931,1899],{"class":58},[35,1933,965],{"class":58},[35,1935,1904],{"class":45},[35,1937,1624],{"class":589},[35,1939,1627],{"class":89},[35,1941,1911],{"class":58},[35,1943,1914],{"class":89},[35,1945,1917],{"class":58},[35,1947,1948],{"class":89}," \u002Fdev\u002FttyUSB0",[35,1950,1923],{"class":45},[14,1952,1953],{},[432,1954],{"alt":31,"src":1955},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage353.webp",[14,1957,1958],{},"這些數據都是不會變的，所以可以拿這些數據來做標識",[14,1960,1247],{},[14,1962,1250,1963,1709],{},[21,1964,1253],{},[26,1966,1967],{"className":580,"code":1257,"language":582,"meta":31,"style":31},[21,1968,1969],{"__ignoreMap":31},[35,1970,1971,1973,1975],{"class":37,"line":38},[35,1972,915],{"class":589},[35,1974,1266],{"class":89},[35,1976,1269],{"class":89},[26,1978,1980],{"className":580,"code":1979,"language":582,"meta":31,"style":31},"KERNEL==\"ttyACM*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"55d4\", ATTRS{serial}==\"0001\", MODE:=\"0777\", SYMLINK+=\"ttyACM_Lidar\"\nKERNEL==\"ttyACM*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"55d4\", ATTRS{serial}==\"0002\", MODE:=\"0777\", SYMLINK+=\"ttyACM_MCU\"\nKERNEL==\"ttyUSB*\", ATTRS{idVendor}==\"1a86\", ATTRS{idProduct}==\"7523\", MODE:=\"0777\", SYMLINK+=\"ttyUSB_IMU\"\n",[21,1981,1982,2010,2036],{"__ignoreMap":31},[35,1983,1984,1986,1988,1991,1993,1995,1997,1999,2002,2005,2007],{"class":37,"line":38},[35,1985,1282],{"class":45},[35,1987,1286],{"class":1285},[35,1989,1990],{"class":89},"=\"ttyACM*\",",[35,1992,1292],{"class":589},[35,1994,1295],{"class":89},[35,1996,1325],{"class":589},[35,1998,1301],{"class":589},[35,2000,2001],{"class":89}," ATTRS{idProduct}==\"55d4\",",[35,2003,2004],{"class":89}," ATTRS{serial}==\"0001\",",[35,2006,1307],{"class":89},[35,2008,2009],{"class":89}," SYMLINK+=\"ttyACM_Lidar\"\n",[35,2011,2012,2014,2016,2018,2020,2022,2024,2026,2028,2031,2033],{"class":37,"line":49},[35,2013,1282],{"class":45},[35,2015,1286],{"class":1285},[35,2017,1990],{"class":89},[35,2019,1292],{"class":589},[35,2021,1295],{"class":89},[35,2023,1325],{"class":589},[35,2025,1301],{"class":589},[35,2027,2001],{"class":89},[35,2029,2030],{"class":89}," ATTRS{serial}==\"0002\",",[35,2032,1307],{"class":89},[35,2034,2035],{"class":89}," SYMLINK+=\"ttyACM_MCU\"\n",[35,2037,2038,2040,2042,2044,2046,2048,2050,2052,2054,2056],{"class":37,"line":65},[35,2039,1282],{"class":45},[35,2041,1286],{"class":1285},[35,2043,1289],{"class":89},[35,2045,1292],{"class":589},[35,2047,1295],{"class":89},[35,2049,1325],{"class":589},[35,2051,1301],{"class":589},[35,2053,1330],{"class":89},[35,2055,1307],{"class":89},[35,2057,2058],{"class":89}," SYMLINK+=\"ttyUSB_IMU\"\n",[14,2060,1459],{},[14,2062,1462],{},[26,2064,2065],{"className":580,"code":1465,"language":582,"meta":31,"style":31},[21,2066,2067,2071,2075,2085,2095,2099,2103,2113],{"__ignoreMap":31},[35,2068,2069],{"class":37,"line":38},[35,2070,1152],{"emptyLinePlaceholder":1151},[35,2072,2073],{"class":37,"line":49},[35,2074,1476],{"class":989},[35,2076,2077,2079,2081,2083],{"class":37,"line":65},[35,2078,915],{"class":589},[35,2080,1483],{"class":89},[35,2082,1486],{"class":89},[35,2084,1489],{"class":89},[35,2086,2087,2089,2091,2093],{"class":37,"line":73},[35,2088,915],{"class":589},[35,2090,1483],{"class":89},[35,2092,1486],{"class":89},[35,2094,1500],{"class":89},[35,2096,2097],{"class":37,"line":81},[35,2098,1152],{"emptyLinePlaceholder":1151},[35,2100,2101],{"class":37,"line":95},[35,2102,1509],{"class":989},[35,2104,2105,2107,2109,2111],{"class":37,"line":103},[35,2106,915],{"class":589},[35,2108,1516],{"class":89},[35,2110,1519],{"class":89},[35,2112,1522],{"class":58},[35,2114,2115,2117,2119],{"class":37,"line":116},[35,2116,915],{"class":589},[35,2118,1516],{"class":89},[35,2120,1531],{"class":89},[14,2122,2123,2124],{},"再重新插拔設備即可，或者 ",[403,2125,2126],{},"直接重啓系統。",[14,2128,1537],{},[14,2130,1540,2131,2134],{},[21,2132,2133],{},"ll \u002Fdev | grep ttyUSB","，運行結果如下：",[14,2136,2137],{},[432,2138],{"alt":31,"src":2139},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002Fimage354.webp",[14,2141,1874],{},[14,2143,2144,2146],{},[403,2145,1587],{}," 一些設備可能沒有串口號等。",[397,2148,2149],{"id":2149},"其他注意事項",[14,2151,2152,2153,2155,2156,2159,2160,2163,2164,2167,2168,2170],{},"並非所有的USB設備端口號都是",[21,2154,1581],{},"的格式，比如Arduino的端口號可能是",[21,2157,2158],{},"ttyACMn","，而對於USB攝像頭而言，一台設備則對應兩個端口號，分別是",[21,2161,2162],{},"videon","和",[21,2165,2166],{},"video(n+1)","，並且啓用攝像頭設備一般使用的是",[21,2169,2162],{},"端口，綁定時需要關聯的也是該接口。",[14,2172,2173,2174,2177,2178,2181,2182,2184,2185,2188,2189,2192,2193,2196,2197,2196,2200,2196,2203,769],{},"但是無論是外接何種USB設備，也不管採用上述兩種方案的哪一種進行端口綁定，其原理都是類似的，只是實現細節不同而已。如果是外接的Arduino設備，那麼需要在rules文件中的將",[21,2175,2176],{},"KERNEL==\"ttyUSB*\"","修改為",[21,2179,2180],{},"KERNEL==\"ttyACM*\"","，如果外接的是USB攝像頭，那麼則需要在rules文件中的將",[21,2183,2176],{},"修改為類似於",[21,2186,2187],{},"KERNEL==\"video[0,2,4,6]\"","的格式，其中",[21,2190,2191],{},"video[0,2,4,6]","表示可以綁定的端口為",[21,2194,2195],{},"video0","或",[21,2198,2199],{},"video2",[21,2201,2202],{},"video4",[21,2204,2205],{},"video6",[10,2207,2209],{"id":2208},"linux分區gui工具","Linux分區Gui工具",[26,2211,2213],{"className":508,"code":2212,"language":510,"meta":511,"style":31},"sudo apt install gparted\nsudo dnf install gparted\n",[21,2214,2215,2220],{"__ignoreMap":31},[35,2216,2217],{"class":37,"line":38},[35,2218,2219],{},"sudo apt install gparted\n",[35,2221,2222],{"class":37,"line":49},[35,2223,2224],{},"sudo dnf install gparted\n",[10,2226,2228],{"id":2227},"ddns","DDNS",[10,2230,2231],{"id":2231},"掛載內網網頁",[14,2233,2234],{},"可以把本地的網頁掛載到路由器端，或者同內網段其他設備上，甚至可以掛載在本地。",[14,2236,2237],{},"下面以安卓設備為例子，由於安卓設備暫時不能直接打開html,所以我們可以把html掛載到本地服務器，再通過瀏覽器查看。",[14,2239,2240],{},"由於安卓系統基於Linux內核，所以我們可以下載一個叫termux的app來敲一些Linux命令：",[14,2242,2243],{},[2244,2245,2246],"a",{"href":2246,"rel":2247},"https:\u002F\u002Fgithub.com\u002Ftermux\u002Ftermux-app",[2248],"nofollow",[14,2250,2251],{},"首先打開app後，先更新軟件緩存：",[26,2253,2255],{"className":580,"code":2254,"language":582,"meta":31,"style":31},"pkg update\n",[21,2256,2257],{"__ignoreMap":31},[35,2258,2259,2262],{"class":37,"line":38},[35,2260,2261],{"class":589},"pkg",[35,2263,2264],{"class":89}," update\n",[14,2266,2267],{},"然後換源",[26,2269,2271],{"className":580,"code":2270,"language":582,"meta":31,"style":31},"nano $PREFIX\u002Fetc\u002Fapt\u002Fsources.list\n",[21,2272,2273],{"__ignoreMap":31},[35,2274,2275,2277,2280],{"class":37,"line":38},[35,2276,973],{"class":589},[35,2278,2279],{"class":45}," $PREFIX",[35,2281,2282],{"class":89},"\u002Fetc\u002Fapt\u002Fsources.list\n",[14,2284,2285],{},"將該文件內容替換為下面：",[26,2287,2289],{"className":580,"code":2288,"language":582,"meta":31,"style":31},"deb https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Ftermux\u002Ftermux-packages-24 stable main\n",[21,2290,2291],{"__ignoreMap":31},[35,2292,2293,2296,2299,2302],{"class":37,"line":38},[35,2294,2295],{"class":589},"deb",[35,2297,2298],{"class":89}," https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Ftermux\u002Ftermux-packages-24",[35,2300,2301],{"class":89}," stable",[35,2303,2304],{"class":89}," main\n",[1340,2306,2307,2334],{},[488,2308,2309,2310,2312,2313],{},"如果你使用的是",[21,2311,973],{},"編輯器：",[1340,2314,2315,2322,2328],{},[488,2316,2317,2318,2321],{},"按 ",[21,2319,2320],{},"Ctrl+O"," 保存文件。",[488,2323,2317,2324,2327],{},[21,2325,2326],{},"Enter"," 確認文件名。",[488,2329,2317,2330,2333],{},[21,2331,2332],{},"Ctrl+X"," 退出編輯器。",[488,2335,2309,2336,2312,2339],{},[21,2337,2338],{},"vim",[1340,2340,2341,2347],{},[488,2342,2317,2343,2346],{},[21,2344,2345],{},"Esc"," 退出編輯模式。",[488,2348,2349,2350,2353],{},"輸入 ",[21,2351,2352],{},":wq"," 保存並退出。",[14,2355,2356],{},"接下來重新更新軟件源：",[26,2358,2360],{"className":580,"code":2359,"language":582,"meta":31,"style":31},"pkg update && pkg upgrade\n",[21,2361,2362],{"__ignoreMap":31},[35,2363,2364,2366,2369,2372,2374],{"class":37,"line":38},[35,2365,2261],{"class":589},[35,2367,2368],{"class":89}," update",[35,2370,2371],{"class":45}," && ",[35,2373,2261],{"class":589},[35,2375,2376],{"class":89}," upgrade\n",[14,2378,2379],{},"安裝python：",[26,2381,2383],{"className":580,"code":2382,"language":582,"meta":31,"style":31},"pkg install python3\n",[21,2384,2385],{"__ignoreMap":31},[35,2386,2387,2389,2391],{"class":37,"line":38},[35,2388,2261],{"class":589},[35,2390,921],{"class":89},[35,2392,2393],{"class":89}," python3\n",[14,2395,2396,2399],{},[403,2397,2398],{},"通過Termux訪問設備存儲"," ：",[14,2401,2402],{},"如果文件在安卓設備上，可以使用Termux的文件管理器訪問設備的存儲：",[26,2404,2406],{"className":580,"code":2405,"language":582,"meta":31,"style":31},"termux-setup-storage\n",[21,2407,2408],{"__ignoreMap":31},[35,2409,2410],{"class":37,"line":38},[35,2411,2405],{"class":589},[485,2413,2414],{},[488,2415,2416,2399,2419],{},[403,2417,2418],{},"進入HTML文件所在的目錄",[485,2420,2421],{},[488,2422,2423,2424,2427],{},"使用",[21,2425,2426],{},"cd","命令進入HTML文件所在的目錄：",[26,2429,2431],{"className":580,"code":2430,"language":582,"meta":31,"style":31},"cd ~\u002Fyour_html_folder\n",[21,2432,2433],{"__ignoreMap":31},[35,2434,2435,2437],{"class":37,"line":38},[35,2436,2426],{"class":58},[35,2438,2439],{"class":89}," ~\u002Fyour_html_folder\n",[485,2441,2442],{"start":49},[488,2443,2444,2399,2447,2452,2471],{},[403,2445,2446],{},"啓動Python HTTP服務器",[485,2448,2449],{},[488,2450,2451],{},"運行以下命令啓動一個簡單的HTTP服務器：",[26,2453,2455],{"className":580,"code":2454,"language":582,"meta":31,"style":31},"python3 -m http.server 8000\n",[21,2456,2457],{"__ignoreMap":31},[35,2458,2459,2462,2465,2468],{"class":37,"line":38},[35,2460,2461],{"class":589},"python3",[35,2463,2464],{"class":58}," -m",[35,2466,2467],{"class":89}," http.server",[35,2469,2470],{"class":58}," 8000\n",[485,2472,2473],{"start":65},[488,2474,2475,2476,2479],{},"這會在端口",[21,2477,2478],{},"8000","上啓動一個Web服務器。",[1340,2481,2482],{},[488,2483,2484],{},"啓動服務器後，Termux會顯示日誌信息，例如：",[26,2486,2488],{"className":580,"code":2487,"language":582,"meta":31,"style":31},"Serving HTTP on 0.0.0.0 port 8000 (http:\u002F\u002F0.0.0.0:8000\u002F) ...\n",[21,2489,2490],{"__ignoreMap":31},[35,2491,2492,2495,2498,2501,2504,2507,2510],{"class":37,"line":38},[35,2493,2494],{"class":589},"Serving",[35,2496,2497],{"class":89}," HTTP",[35,2499,2500],{"class":89}," on",[35,2502,2503],{"class":58}," 0.0.0.0",[35,2505,2506],{"class":89}," port",[35,2508,2509],{"class":58}," 8000",[35,2511,2512],{"class":45}," (http:\u002F\u002F0.0.0.0:8000\u002F) ...\n",[1340,2514,2515],{},[488,2516,2517],{},"這表示服務器已成功啓動。",[14,2519,2520],{},[403,2521,2522],{},"在瀏覽器中訪問HTML文件",[485,2524,2525],{},[488,2526,2527,2399,2530,2535,2544],{},[403,2528,2529],{},"在同一設備上訪問",[485,2531,2532],{},[488,2533,2534],{},"打開安卓設備上的瀏覽器（如Chrome），輸入以下地址：",[26,2536,2538],{"className":580,"code":2537,"language":582,"meta":31,"style":31},"http:\u002F\u002Flocalhost:8000\n",[21,2539,2540],{"__ignoreMap":31},[35,2541,2542],{"class":37,"line":38},[35,2543,2537],{"class":589},[485,2545,2546],{"start":65},[488,2547,2548,2549,2552],{},"如果HTML文件中有",[21,2550,2551],{},"index.html","，它會自動加載；否則，你需要手動點擊文件鏈接。",[10,2554,2556],{"id":2555},"rustdesk","RustDesk",[397,2558,2560],{"id":2559},"rustdesk無人值守遠程控制","RustDesk無人值守遠程控制",[14,2562,2563],{},"目前rustdesk還沒辦法進行無人值守在wayland下,所以我們需要把登陸密碼,鎖屏和休眠待機全部關掉.",[2565,2566,2568],"h5",{"id":2567},"設置-kde6-自動登錄","設置 KDE6 自動登錄",[485,2570,2571],{},[488,2572,2573],{},"可以先查自己的sddm類型",[26,2575,2577],{"className":580,"code":2576,"language":582,"meta":31,"style":31},"ls \u002Fusr\u002Fshare\u002Fxsessions\u002F\n",[21,2578,2579],{"__ignoreMap":31},[35,2580,2581,2584],{"class":37,"line":38},[35,2582,2583],{"class":589},"ls",[35,2585,2586],{"class":89}," \u002Fusr\u002Fshare\u002Fxsessions\u002F\n",[26,2588,2590],{"className":580,"code":2589,"language":582,"meta":31,"style":31},"ls \u002Fusr\u002Fshare\u002Fwayland-sessions\u002F\n",[21,2591,2592],{"__ignoreMap":31},[35,2593,2594,2596],{"class":37,"line":38},[35,2595,2583],{"class":589},[35,2597,2598],{"class":89}," \u002Fusr\u002Fshare\u002Fwayland-sessions\u002F\n",[14,2600,2601],{},"看哪個會輸出東西,輸出東西的文件夾就是你擁有的sddm,比如xsessions輸出內容的話,那就是x11的sddm,如果wayland-sessions輸出內容的話你就是wayland的sddm.",[485,2603,2604],{"start":49},[488,2605,2606],{},"編輯 SDDM 配置：",[26,2608,2610],{"className":580,"code":2609,"language":582,"meta":31,"style":31},"sudo nano \u002Fetc\u002Fsddm.conf\n",[21,2611,2612],{"__ignoreMap":31},[35,2613,2614,2616,2619],{"class":37,"line":38},[35,2615,915],{"class":589},[35,2617,2618],{"class":89}," nano",[35,2620,2621],{"class":89}," \u002Fetc\u002Fsddm.conf\n",[14,2623,2624,2625,2628],{},"在文件最上面有個",[35,2626,2627],{},"Autologin",",在這個底下加入下面的內容：",[26,2630,2632],{"className":580,"code":2631,"language":582,"meta":31,"style":31},"[Autologin]\nUser=你的用户名\nSession=plasma.desktop   # 或 plasma.desktop（X11），方案一可用 Wayland\n",[21,2633,2634,2639,2649],{"__ignoreMap":31},[35,2635,2636],{"class":37,"line":38},[35,2637,2638],{"class":45},"[Autologin]\n",[35,2640,2641,2644,2646],{"class":37,"line":49},[35,2642,2643],{"class":45},"User",[35,2645,1286],{"class":1285},[35,2647,2648],{"class":89},"你的用户名\n",[35,2650,2651,2654,2656,2659],{"class":37,"line":65},[35,2652,2653],{"class":45},"Session",[35,2655,1286],{"class":1285},[35,2657,2658],{"class":89},"plasma.desktop",[35,2660,2661],{"class":989},"   # 或 plasma.desktop（X11），方案一可用 Wayland\n",[485,2663,2664],{"start":65},[488,2665,2666],{},"保存退出後重啓 SDDM：",[26,2668,2670],{"className":580,"code":2669,"language":582,"meta":31,"style":31},"sudo systemctl restart sddm\n",[21,2671,2672],{"__ignoreMap":31},[35,2673,2674,2676,2679,2682],{"class":37,"line":38},[35,2675,915],{"class":589},[35,2677,2678],{"class":89}," systemctl",[35,2680,2681],{"class":89}," restart",[35,2683,2684],{"class":89}," sddm\n",[14,2686,2687],{},"✅ 開機後自動進入桌面，無需輸入密碼",[2565,2689,2691],{"id":2690},"關閉鎖屏在-kde6-系統設置裏","關閉鎖屏在 KDE6 系統設置裏：",[14,2693,2694],{},"打開 系統設置 → 屏幕鎖定(Screen Locking)\n關閉自動鎖定\n關閉屏幕關閉 \u002F 屏幕保護鎖定\n這樣 RustDesk 可以開機後直接控制桌面，不會被鎖屏阻擋",[2565,2696,2698],{"id":2697},"關閉休眠系統設置-電源管理power-managerment","關閉休眠系統設置 → 電源管理(Power Managerment)",[14,2700,2701],{},"禁用“休眠”或“自動掛起”\n保證電腦開機一直在線，RustDesk 可隨時遠控\n如果必須休眠，可在 BIOS 設置裏禁用休眠，保證開機即聯網",[397,2703,2705],{"id":2704},"rustdesk自建服務器","RustDesk自建服務器",[2565,2707,2708],{"id":2708},"在服務器端安裝",[2710,2711,2712],"h6",{"id":2712},"命令行方式",[485,2714,2715],{},[488,2716,2717,2718],{},"打開官網:",[2244,2719,2720],{"href":2720,"rel":2721},"https:\u002F\u002Frustdesk.com\u002Fdocs\u002Fzh-cn\u002Fself-host\u002F",[2248],[14,2723,2724],{},[432,2725],{"alt":2726,"src":2727},"alt text","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768144998052.webp",[485,2729,2730],{"start":49},[488,2731,2732],{},"用ssh訪問你需要安裝RustDesk的服務器",[26,2734,2736],{"className":580,"code":2735,"language":582,"meta":31,"style":31},"ssh tungchiahui@10.0.0.4\n",[21,2737,2738],{"__ignoreMap":31},[35,2739,2740,2742],{"class":37,"line":38},[35,2741,590],{"class":589},[35,2743,2744],{"class":89}," tungchiahui@10.0.0.4\n",[14,2746,2747],{},[432,2748],{"alt":2726,"src":2749},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768145500558.webp",[485,2751,2752],{"start":65},[488,2753,2754],{},"使用方法二的命令",[14,2756,2757],{},[432,2758],{"alt":2726,"src":2759},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768145605588.webp",[26,2761,2763],{"className":580,"code":2762,"language":582,"meta":31,"style":31},"wget https:\u002F\u002Fraw.githubusercontent.com\u002Ftechahold\u002Frustdeskinstall\u002Fmaster\u002Finstall.sh\nchmod +x install.sh\n.\u002Finstall.sh\n",[21,2764,2765,2773,2782],{"__ignoreMap":31},[35,2766,2767,2770],{"class":37,"line":38},[35,2768,2769],{"class":589},"wget",[35,2771,2772],{"class":89}," https:\u002F\u002Fraw.githubusercontent.com\u002Ftechahold\u002Frustdeskinstall\u002Fmaster\u002Finstall.sh\n",[35,2774,2775,2777,2779],{"class":37,"line":49},[35,2776,1031],{"class":589},[35,2778,1034],{"class":89},[35,2780,2781],{"class":89}," install.sh\n",[35,2783,2784],{"class":37,"line":65},[35,2785,2786],{"class":589},".\u002Finstall.sh\n",[14,2788,2789],{},".\u002Finstall.sh的設置看下一節",[485,2791,2792],{"start":73},[488,2793,2794],{},"配置與查看KEY",[14,2796,2797,2798,2801,2802,2805],{},"這裏如果你是想直接用公網ip則選擇",[21,2799,2800],{},"1)IP",",如果你是DDNS等用域名綁定了IP地址,則選擇",[21,2803,2804],{},"2)",".",[14,2807,2808],{},[432,2809],{"alt":2726,"src":2810},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148704646.webp",[14,2812,2813,2814],{},"這個選",[21,2815,2816],{},"2)No",[14,2818,2819],{},[432,2820],{"alt":2726,"src":2821},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148806049.webp",[14,2823,2824],{},"這個是KEY,要複製下來,等後面軟件配置的時候要用.",[14,2826,2827],{},[432,2828],{"alt":2726,"src":2829},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148866392.webp",[485,2831,2832],{"start":81},[488,2833,2834,2835,2840,2856,2834,2859,2909,2914,2950,2834,2952],{},"配置防火牆",[485,2836,2837],{},[488,2838,2839],{},"如果你是Debian系\n安裝防火牆",[26,2841,2843],{"className":580,"code":2842,"language":582,"meta":31,"style":31},"sudo apt install ufw\n",[21,2844,2845],{"__ignoreMap":31},[35,2846,2847,2849,2851,2853],{"class":37,"line":38},[35,2848,915],{"class":589},[35,2850,918],{"class":89},[35,2852,921],{"class":89},[35,2854,2855],{"class":89}," ufw\n",[2857,2858],"br",{},[26,2860,2862],{"className":580,"code":2861,"language":582,"meta":31,"style":31},"sudo ufw allow 22\n\nufw allow 21114:21119\u002Ftcp\nufw allow 21116\u002Fudp\nsudo ufw enable\n",[21,2863,2864,2877,2881,2891,2900],{"__ignoreMap":31},[35,2865,2866,2868,2871,2874],{"class":37,"line":38},[35,2867,915],{"class":589},[35,2869,2870],{"class":89}," ufw",[35,2872,2873],{"class":89}," allow",[35,2875,2876],{"class":58}," 22\n",[35,2878,2879],{"class":37,"line":49},[35,2880,1152],{"emptyLinePlaceholder":1151},[35,2882,2883,2886,2888],{"class":37,"line":65},[35,2884,2885],{"class":589},"ufw",[35,2887,2873],{"class":89},[35,2889,2890],{"class":89}," 21114:21119\u002Ftcp\n",[35,2892,2893,2895,2897],{"class":37,"line":73},[35,2894,2885],{"class":589},[35,2896,2873],{"class":89},[35,2898,2899],{"class":89}," 21116\u002Fudp\n",[35,2901,2902,2904,2906],{"class":37,"line":81},[35,2903,915],{"class":589},[35,2905,2870],{"class":89},[35,2907,2908],{"class":89}," enable\n",[485,2910,2911],{"start":49},[488,2912,2913],{},"如果你是RHEL系\n安裝防火牆",[26,2915,2917],{"className":580,"code":2916,"language":582,"meta":31,"style":31},"# 如果你是RHEL系\nsudo dnf install firewalld\nsudo systemctl enable --now firewalld\n",[21,2918,2919,2924,2936],{"__ignoreMap":31},[35,2920,2921],{"class":37,"line":38},[35,2922,2923],{"class":989},"# 如果你是RHEL系\n",[35,2925,2926,2928,2931,2933],{"class":37,"line":49},[35,2927,915],{"class":589},[35,2929,2930],{"class":89}," dnf",[35,2932,921],{"class":89},[35,2934,2935],{"class":89}," firewalld\n",[35,2937,2938,2940,2942,2945,2948],{"class":37,"line":65},[35,2939,915],{"class":589},[35,2941,2678],{"class":89},[35,2943,2944],{"class":89}," enable",[35,2946,2947],{"class":58}," --now",[35,2949,2935],{"class":89},[2857,2951],{},[26,2953,2955],{"className":580,"code":2954,"language":582,"meta":31,"style":31},"sudo firewall-cmd --add-port=22\u002Ftcp --permanent\nsudo firewall-cmd --reload\n\nsudo firewall-cmd --add-port=21114-21119\u002Ftcp --permanent\nsudo firewall-cmd --reload\n\nsudo firewall-cmd --add-port=21116\u002Fudp --permanent\nsudo firewall-cmd --reload\n\nsudo systemctl enable --now firewalld\n",[21,2956,2957,2970,2978,2982,2993,3001,3005,3016,3024,3028],{"__ignoreMap":31},[35,2958,2959,2961,2964,2967],{"class":37,"line":38},[35,2960,915],{"class":589},[35,2962,2963],{"class":89}," firewall-cmd",[35,2965,2966],{"class":58}," --add-port=22\u002Ftcp",[35,2968,2969],{"class":58}," --permanent\n",[35,2971,2972,2974,2976],{"class":37,"line":49},[35,2973,915],{"class":589},[35,2975,2963],{"class":89},[35,2977,1522],{"class":58},[35,2979,2980],{"class":37,"line":65},[35,2981,1152],{"emptyLinePlaceholder":1151},[35,2983,2984,2986,2988,2991],{"class":37,"line":73},[35,2985,915],{"class":589},[35,2987,2963],{"class":89},[35,2989,2990],{"class":58}," --add-port=21114-21119\u002Ftcp",[35,2992,2969],{"class":58},[35,2994,2995,2997,2999],{"class":37,"line":81},[35,2996,915],{"class":589},[35,2998,2963],{"class":89},[35,3000,1522],{"class":58},[35,3002,3003],{"class":37,"line":95},[35,3004,1152],{"emptyLinePlaceholder":1151},[35,3006,3007,3009,3011,3014],{"class":37,"line":103},[35,3008,915],{"class":589},[35,3010,2963],{"class":89},[35,3012,3013],{"class":58}," --add-port=21116\u002Fudp",[35,3015,2969],{"class":58},[35,3017,3018,3020,3022],{"class":37,"line":116},[35,3019,915],{"class":589},[35,3021,2963],{"class":89},[35,3023,1522],{"class":58},[35,3025,3026],{"class":37,"line":129},[35,3027,1152],{"emptyLinePlaceholder":1151},[35,3029,3030,3032,3034,3036,3038],{"class":37,"line":141},[35,3031,915],{"class":589},[35,3033,2678],{"class":89},[35,3035,2944],{"class":89},[35,3037,2947],{"class":58},[35,3039,2935],{"class":89},[2710,3041,3043],{"id":3042},"_1panel方式","1Panel方式",[485,3045,3046],{},[488,3047,3048],{},"在面板裏搜RustDesk並安裝",[14,3050,3051],{},[432,3052],{"alt":2726,"src":3053},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146100467.webp",[485,3055,3056],{"start":49},[488,3057,2834],{},[14,3059,3060],{},[432,3061],{"alt":2726,"src":3062},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146828373.webp",[14,3064,3065,3066,3069,3072],{},"添加幾個端口\n",[432,3067],{"alt":2726,"src":3068},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146848849.webp",[432,3070],{"alt":2726,"src":3071},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146858053.webp",[432,3073],{"alt":2726,"src":3074},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146876612.webp",[485,3076,3077],{"start":65},[488,3078,3079,3080],{},"查看KEY\n",[432,3081],{"alt":2726,"src":3082},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768146996637.webp",[14,3084,3085],{},"複製KEY",[14,3087,3088],{},[432,3089],{"alt":2726,"src":3090},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768147034654.webp",[2565,3092,3094],{"id":3093},"自建服務器後配置rustdesk軟件","自建服務器後配置RustDesk軟件",[485,3096,3097],{},[488,3098,3099],{},"PC端",[14,3101,3102],{},[432,3103],{"alt":2726,"src":3104},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768147115389.webp",[14,3106,3107],{},[432,3108],{"alt":2726,"src":3109},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768147204480.webp",[14,3111,3112,3113],{},"出現就緒就是配置成功了\n",[432,3114],{"alt":2726,"src":3115},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768147547538.webp",[485,3117,3118],{"start":49},[488,3119,3120],{},"移動端",[14,3122,3123],{},[432,3124],{"alt":2726,"src":3125},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768149138253.webp",[14,3127,3128],{},[432,3129],{"alt":2726,"src":3130},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768149199158.webp",[2710,3132,3133],{"id":3133},"注意的問題",[14,3135,3136],{},"如果你是家庭的內網服務器,則需要讓路由器也放行對應端口",[14,3138,3139,3140],{},"找到openwrt防火牆設置,點擊添加\n",[432,3141],{"alt":2726,"src":3142},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148357743.webp",[14,3144,3145],{},[432,3146],{"alt":2726,"src":3147},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148378543.webp",[14,3149,3150],{},[432,3151],{"alt":2726,"src":3152},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1768148398594.webp",[14,3154,3155],{},"這樣才可以讓你的服務器端口被真正成功放行.",[10,3157,3159],{"id":3158},"wireguard","WireGuard",[397,3161,3162],{"id":3162},"簡介",[14,3164,3165],{},"WireGuard是用於在室外通過VPN來訪問內網設備的一種工具.",[14,3167,3168],{},"這裏我的教程將會教你如何在室外訪問你家裏的內網設備.",[397,3170,3171],{"id":3171},"我的環境",[2565,3173,3174],{"id":3174},"內網",[14,3176,3177,3178],{},"家庭內網網段:",[21,3179,3180],{},"10.0.0.0\u002F24",[14,3182,3183],{},[432,3184],{"alt":2726,"src":3185},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783171015365.webp",[2565,3187,3188],{"id":3188},"外部設備",[14,3190,3191,3192,3195],{},"如果你是在辦公室等地方鏈接辦公室的wifi,那麼你需要知道",[21,3193,3194],{},"室外内网网段",",如果你直接用手機數據流量的話,那麼什麼都不需要知道.",[14,3197,3198,3199,3202],{},"室外內網網段:",[21,3200,3201],{},"192.168.31.0\u002F24","\n室外數據流量運營商:中國聯通",[397,3204,3205],{"id":3205},"安裝",[2565,3207,3208],{"id":3208},"服務端-軟路由端",[14,3210,3211],{},"SSH登錄OpenWrt，或者用LuCI界面：",[26,3213,3215],{"className":580,"code":3214,"language":582,"meta":31,"style":31},"opkg update\nopkg install wireguard-tools luci-proto-wireguard kmod-wireguard qrencode\n",[21,3216,3217,3224],{"__ignoreMap":31},[35,3218,3219,3222],{"class":37,"line":38},[35,3220,3221],{"class":589},"opkg",[35,3223,2264],{"class":89},[35,3225,3226,3228,3230,3233,3236,3239],{"class":37,"line":49},[35,3227,3221],{"class":589},[35,3229,921],{"class":89},[35,3231,3232],{"class":89}," wireguard-tools",[35,3234,3235],{"class":89}," luci-proto-wireguard",[35,3237,3238],{"class":89}," kmod-wireguard",[35,3240,3241],{"class":89}," qrencode\n",[14,3243,3244],{},"裝完刷新一下瀏覽器LuCI頁面.",[2565,3246,3248],{"id":3247},"客户端-手機電腦端","客户端-手機,電腦端",[14,3250,3251],{},[2244,3252,3253],{"href":3253,"rel":3254},"https:\u002F\u002Fwww.wireguard.com\u002Finstall\u002F",[2248],[485,3256,3257],{},[488,3258,3259],{},"Android",[14,3261,3262],{},[2244,3263,3264],{"href":3264,"rel":3265},"https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.wireguard.android&hl=zh&pli=1",[2248],[485,3267,3268],{"start":49},[488,3269,3270],{},"iOS",[14,3272,3273,3274,3278,3279,3283,3284],{},"美區:",[2244,3275,3276],{"href":3276,"rel":3277},"https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Fwireguard\u002Fid1441195209",[2248],"\n日區:",[2244,3280,3281],{"href":3281,"rel":3282},"https:\u002F\u002Fapps.apple.com\u002Fjp\u002Fapp\u002Fwireguard\u002Fid1441195209",[2248],"\n台區:",[2244,3285,3286],{"href":3286,"rel":3287},"https:\u002F\u002Fapps.apple.com\u002Ftw\u002Fapp\u002Fwireguard\u002Fid1441195209",[2248],[485,3289,3290],{"start":65},[488,3291,3292,3293,3298,3315],{},"Linux",[485,3294,3295],{},[488,3296,3297],{},"Fedora",[26,3299,3301],{"className":580,"code":3300,"language":582,"meta":31,"style":31}," sudo dnf install wireguard-tools\n\n",[21,3302,3303],{"__ignoreMap":31},[35,3304,3305,3308,3310,3312],{"class":37,"line":38},[35,3306,3307],{"class":589}," sudo",[35,3309,2930],{"class":89},[35,3311,921],{"class":89},[35,3313,3314],{"class":89}," wireguard-tools\n",[485,3316,3317],{"start":49},[488,3318,3319],{},"Ubuntu\u002FDebian",[26,3321,3323],{"className":580,"code":3322,"language":582,"meta":31,"style":31},"sudo apt install wireguard\n",[21,3324,3325],{"__ignoreMap":31},[35,3326,3327,3329,3331,3333],{"class":37,"line":38},[35,3328,915],{"class":589},[35,3330,918],{"class":89},[35,3332,921],{"class":89},[35,3334,3335],{"class":89}," wireguard\n",[397,3337,3338],{"id":3338},"配置",[2565,3340,3341],{"id":3341},"服務端-初始化配置",[14,3343,3344,3345],{},"在luci界面中,點擊",[21,3346,3347],{},"网络 → 接口 → 添加新接口",[485,3349,3350,3353,3356],{},[488,3351,3352],{},"協議選 WireGuard VPN",[488,3354,3355],{},"名稱填 wg0",[488,3357,3358],{},"點下一步，進到詳情頁",[14,3360,3361],{},[432,3362],{"alt":2726,"src":3363},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783170592021.webp",[14,3365,3366,3367,3370,3371,3374],{},"按照上圖的步驟,依次配置.\n這裏解釋一下.\n監聽端口：",[21,3368,3369],{},"51820","（可自定義，使用一個未被佔用的端口即可,記住這個端口,不懂的話就照我的設置）\nIP地址：",[21,3372,3373],{},"10.10.10.1\u002F24","（VPN內網網段，跟你軟路由的局域網段不能衝突,不懂的話就照我的設置）",[14,3376,3377,3378,3381,3382,3384],{},"你必須確保你的",[21,3379,3380],{},"家庭内网网段","和你的",[21,3383,3194],{},"以及剛才填的那個IP地址不能屬於同一網段.",[14,3386,3387,3388,3390,3391,3393,3394,3390,3396,3398,3399,2805],{},"比如我的",[21,3389,3380],{},"是",[21,3392,3180],{},",而",[21,3395,3194],{},[21,3397,3201],{},",VPN的網段",[21,3400,3401],{},"10.10.10.0\u002F24",[14,3403,3404,3405,2805],{},"然後點擊防火牆設置,選擇",[21,3406,3159],{},[14,3408,3409],{},[432,3410],{"alt":2726,"src":3411},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783171881431.webp",[2565,3413,3414],{"id":3414},"服務端-對端配置",[14,3416,3417],{},"這裏配置的就是你的手機\u002F筆記本作為客户端連進來的信息：",[14,3419,3420],{},"這個界面很方便，LuCI可以直接幫你生成客户端的密鑰對並直接導出配置文件\u002F二維碼，不需要你手動在手機上先生成公鑰再倒騰過來，效率高很多。按下面順序填：",[485,3422,3423,3426,3429,3432,3435,3438,3441,3444,3447],{},[488,3424,3425],{},"描述\nphone\n（或者你自己好記的名字，比如\"iPhone17\"）",[488,3427,3428],{},"公鑰 + 私鑰 —— 直接點\"生成新的密鑰對\"\n點這個按鈕，系統會自動幫你同時生成一對新的公鑰+私鑰，並自動填到\"公鑰\"和\"私鑰\"兩個框裏。\n這個做法比你自己在手機App裏生成再抄公鑰過來省事得多，因為最後可以直接導出完整配置文件甚至二維碼給手機掃碼導入，私鑰也是配置好的，不用手動輸入。",[488,3430,3431],{},"預共享密鑰(PSK) —— 建議點\"生成預共享密鑰\"\n這是可選的額外加密層，加上更安全（抗未來量子計算破解），點一下\"生成預共享密鑰\"按鈕自動填好即可，不需要手動操作。",[488,3433,3434],{},"允許的IP\n點綠色+號，填：\n10.10.10.2\u002F32\n這是分配給這台手機的隧道內網IP（如果以後要加第二台設備，比如筆記本，就用10.10.10.3\u002F32，以此類推）。",[488,3436,3437],{},"為允許的IP創建路由 —— 勾選\n這個決定了服務端要不要給這個IP自動建路由，勾上，否則服務端不知道怎麼把去往10.10.10.2的包轉發給這個peer。",[488,3439,3440],{},"對端地址 (Image 2)\n這個字段填的是客户端的地址，但因為你的手機是移動設備、IP會變，服務端這邊留空即可，不用填。（這個字段一般是給\"兩個固定IP的服務器互聯\"場景用的，你這種手機\u002F筆記本客户端場景不需要）",[488,3442,3443],{},"對端端口\n同理，留空或者保持默認51820佔位符不用管，服務端這邊這個字段對客户端場景沒意義，跳過。",[488,3445,3446],{},"持續保持連接(Persistent Keepalive)\n填：\n25\n因為手機大概率處在NAT環境下（無論是WiFi還是4G\u002F5G），這個值能防止連接因為長時間無流量被NAT設備判定斷開。",[488,3448,3449],{},"保存後 —— 點\"生成配置...\"\n這一步是重點：全部填完先點右下角\"保存\"，保存完之後再進來點 配置導出 那個\"生成配置...\"按鈕，系統會：",[14,3451,3452],{},"自動生成一份完整的客户端配置文件（包含私鑰、服務端公鑰、Endpoint地址等全部信息）\n通常還會顯示一個二維碼",[14,3454,3455],{},"手機WireGuard App直接掃這個二維碼就能一鍵導入配置，完全不用你手動輸入任何字段，最省事。",[485,3457,3458],{"start":141},[488,3459,3460,3461,3463,3466,3491,3493,3494,3496,3497],{},"填完這些保存之後，點\"生成配置\"",[2857,3462],{},[432,3464],{"alt":2726,"src":3465},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783172425569.webp",[485,3467,3468,3488],{},[488,3469,3470,3471,3475,3476,3479,3480,3483,3484,3487],{},"連接端點 —— 改成DDNS域名\n沒有ddns域名的請看",[2244,3472,3474],{"href":3473},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo#ddns","ddns教程",".\n現在顯示的是 ",[21,3477,3478],{},"112.233.39.5"," 這個具體的公網IPv4，這是系統自動探測到的當前公網IP，但建議改成：",[21,3481,3482],{},"ddns.xxxxxx.cn","\n原因很簡單：家庭寬帶的公網IP大概率是動態的(如果你是中國移動,你完全不需要擔心這件事情,你沒有公網ipv4,你只有公網ipv6)，過一陣子運營商重新分配IP後，這個寫死的IP就失效了，配置文件也就廢了。用DDNS域名的話，只要你路由器上的DDNS客户端正常更新，域名自動跟着IP變化解析，配置文件永久有效，不用來回改。\n直接把這個下拉框裏的值改成 ",[21,3485,3486],{},"ddns.tungchiahui.cn"," 即可，如果下拉框裏沒有這個選項，看能不能手動輸入替換。",[488,3489,3490],{},"允許的IP —— 這個要看你的使用需求，建議改\n現在是 0.0.0.0\u002F0 + ::\u002F0，意思是全局代理模式：連上VPN後，手機\u002F電腦的所有上網流量（刷網頁、看視頻、聊天全部）都會先繞道回你家裏，再從家裏的網絡出去上網。\n這跟最初的需求（\"在外面訪問家裏NAS\"）不太一致，全局模式的影響：",[2857,3492],{},"✅ 優點：所有流量都通過加密隧道，公共WiFi環境下更安全\n❌ 缺點：手機所有網絡流量的速度都取決於你家寬帶的上傳帶寬，如果你家是常見的百兆寬帶（上傳可能才幾十M甚至更低），刷視頻、下載會明顯變慢；而且家裏NAT要承擔所有流量的轉發壓力",[2857,3495],{},"如果你只是想訪問家裏內網的NAS\u002FPVE\u002FDebian，建議改成分離隧道模式，把這兩行改成：\n10.10.10.0\u002F24\n10.0.0.0\u002F24\n刪掉 0.0.0.0\u002F0 和 ::\u002F0 這兩行（點它們右邊的紅色×號），只保留上面這兩個網段。這樣只有\"訪問家裏內網\"這一類流量才走VPN隧道，其他正常上網流量不受影響，速度不受影響。\n如果你確實希望VPN也當\"全局代理\"用（比如出門用境外的WiFi想用家裏的網絡環境訪問某些內容），那就保留 0.0.0.0\u002F0 不用改。",[485,3498,3499,3502],{"start":65},[488,3500,3501],{},"DNS服務器：10.0.0.1 —— 這是你家庭內網的軟路由的LAN地址，連VPN後用它解析域名沒問題，能順帶解析你家內網可能配置的一些本地域名",[488,3503,3504],{},"地址：10.10.10.2\u002F32 —— 這個就是你想給你的這個手機分配一個VPN網段",[14,3506,3507],{},[432,3508],{"alt":2726,"src":3509},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783173072915.webp",[14,3511,3512],{},"然後掏出手機的客户端,使用QRcode導入配置即可.",[14,3514,3515],{},[432,3516],{"alt":2726,"src":3517},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783173937724.webp",[2565,3519,3520],{"id":3520},"服務端-防火牆設置",[14,3522,3523],{},"需要加的規則\n去 網絡 → 防火牆 → 通信規則(Traffic Rules)，點\"添加\"：",[14,3525,3526],{},[432,3527],{"alt":2726,"src":3528},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783173591260.webp",[14,3530,3531],{},"名稱：WireGuard（隨便起）\n協議：UDP 或者 TCP\u002FUDP\n源區域：wan\n目標區域：設備(輸入) —— 因為WireGuard監聽的是軟路由本機端口，不是轉發給內網其他設備\n目標端口：51820（跟你wg0接口\"監聽端口\"那裏填的一致）\n操作：接受(Accept)",[14,3533,3534],{},[432,3535],{"alt":2726,"src":3536},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783173651000.webp",[14,3538,3539],{},"保存，應用。",[2565,3541,3542],{"id":3542},"客户端",[14,3544,3545],{},"拿iOS舉例子",[14,3547,3548],{},"我這裏使用數據流量來測試,使用的是中國聯通4G.",[14,3550,3551],{},"像使用普通的VPN一樣打開你導入的這個配置即可.",[14,3553,3554],{},[432,3555],{"alt":2726,"src":3556},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783173983036.webp",[397,3558,3559],{"id":3559},"測試",[14,3561,3562],{},"然後可以嘗試訪問你的內網設備,\n比如我的\nopenwrt是10.0.0.1,\npve是10.0.0.2,\nnas是10.0.0.5都可以被正常訪問了.",[14,3564,3565],{},[432,3566],{"alt":2726,"src":3567},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783174333555.webp",[14,3569,3570],{},[432,3571],{"alt":2726,"src":3572},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783174341112.webp",[14,3574,3575],{},[432,3576],{"alt":2726,"src":3577},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783174344742.webp",[397,3579,3581],{"id":3580},"將wireguard交由clash-meta管理可選","將WireGuard交由Clash Meta管理(可選)",[2565,3583,3585],{"id":3584},"將純wireguard配置放入clash-meta","將純WireGuard配置放入Clash Meta",[14,3587,3588],{},"如果手機或電腦上已經長期運行支持Mihomo \u002F Clash Meta內核的客户端，再單獨啓動WireGuard客户端會比較麻煩，而且同一台移動設備通常不能同時啓用兩個VPN隧道。",[14,3590,3591],{},"因此，可以將WireGuard節點直接寫入Clash Meta配置，讓Clash Meta統一負責：",[485,3593,3594,3597,3600],{},[488,3595,3596],{},"普通互聯網流量直連；",[488,3598,3599],{},"家庭內網流量通過WireGuard訪問；",[488,3601,3602],{},"根據規則自動判斷流量應該走哪個出口。",[14,3604,3605],{},"本節只介紹不包含機場或其他代理節點的純WireGuard配置。",[14,3607,3608],{},"配置完成後，不再需要打開獨立的WireGuard客户端。使用該配置時，應關閉WireGuard App中的隧道，只打開Clash Meta。",[2710,3610,3612],{"id":3611},"查看wireguard客户端參數","查看WireGuard客户端參數",[14,3614,3615],{},"先打開已經能夠正常使用的WireGuard客户端配置，需要記錄以下信息：",[1368,3617,3618,3628],{},[1371,3619,3620],{},[1374,3621,3622,3625],{},[1377,3623,3624],{"align":1379},"Clash Meta字段",[1377,3626,3627],{"align":1379},"WireGuard客户端中的對應字段",[1388,3629,3630,3640,3650,3663,3673,3683,3693],{},[1374,3631,3632,3637],{},[1393,3633,3634],{"align":1379},[21,3635,3636],{},"server",[1393,3638,3639],{"align":1379},"Peer中的Endpoint域名或公網IP",[1374,3641,3642,3647],{},[1393,3643,3644],{"align":1379},[21,3645,3646],{},"port",[1393,3648,3649],{"align":1379},"Peer中的Endpoint端口",[1374,3651,3652,3657],{},[1393,3653,3654],{"align":1379},[21,3655,3656],{},"ip",[1393,3658,3659,3660],{"align":1379},"Interface中的Addresses，只填寫IPv4地址，不寫",[21,3661,3662],{},"\u002F32",[1374,3664,3665,3670],{},[1393,3666,3667],{"align":1379},[21,3668,3669],{},"private-key",[1393,3671,3672],{"align":1379},"Interface中的Private key",[1374,3674,3675,3680],{},[1393,3676,3677],{"align":1379},[21,3678,3679],{},"public-key",[1393,3681,3682],{"align":1379},"Peer中的Public key，也就是WireGuard服務器公鑰",[1374,3684,3685,3690],{},[1393,3686,3687],{"align":1379},[21,3688,3689],{},"pre-shared-key",[1393,3691,3692],{"align":1379},"Peer中的Preshared key",[1374,3694,3695,3700],{},[1393,3696,3697],{"align":1379},[21,3698,3699],{},"persistent-keepalive",[1393,3701,3702],{"align":1379},"Peer中的Persistent keepalive",[14,3704,3705],{},"這裏最容易弄錯的是兩個公鑰：",[1340,3707,3708,3714],{},[488,3709,3710,3711,3713],{},"Interface中的Public key是當前客户端的公鑰，不能填入Clash Meta的",[21,3712,3679],{},"；",[488,3715,3716,3717,769],{},"Peer中的Public key才是WireGuard服務器公鑰，需要填入Clash Meta的",[21,3718,3679],{},[14,3720,3721],{},[432,3722],{"alt":3723,"src":3724},"WireGuard客户端參數位置","%E8%AF%B7%E6%9B%BF%E6%8D%A2%E4%B8%BA%E5%9B%BE%E7%89%87%E5%9C%B0%E5%9D%80",[14,3726,3727],{},"這一張圖同時包含Interface和Peer兩部分，已經足夠説明各個字段應該從哪裏獲取，不需要再增加其他截圖。",[2710,3729,3731],{"id":3730},"創建yaml配置","創建YAML配置",[14,3733,3734,3735,3738],{},"新建一個擴展名為",[21,3736,3737],{},".yaml","的文件，例如：",[26,3740,3745],{"className":3741,"code":3743,"language":3744,"meta":31},[3742],"language-text","home-wireguard.yaml\n","text",[21,3746,3743],{"__ignoreMap":31},[14,3748,3749],{},"寫入下面的模板：",[26,3751,3755],{"className":3752,"code":3753,"language":3754,"meta":31,"style":31},"language-yaml shiki shiki-themes github-light github-dark","# 仅让家庭内网流量通过WireGuard\n# 普通互联网流量保持直连\n# 启用本配置时，不要同时开启独立的WireGuard客户端\n\nmixed-port: 7890\nallow-lan: false\nmode: rule\nlog-level: info\nipv6: true\n\ntun:\n  enable: true\n  stack: mixed\n  auto-route: true\n  auto-detect-interface: true\n\nproxies:\n  - name: 家庭-WG\n    type: wireguard\n\n    # WireGuard客户端Peer中的Endpoint\n    server: ddns.example.com\n    port: 51820\n\n    # WireGuard客户端Interface中的Addresses\n    # 例如原配置为10.10.10.2\u002F32，这里只填写10.10.10.2\n    ip: 10.10.10.2\n\n    # WireGuard客户端Interface中的Private key\n    private-key: \"gBzeTbZH...\"\n\n    # WireGuard客户端Peer中的Public key，即服务器公钥\n    # 不要填写Interface中的客户端公钥\n    public-key: \"UUS0nrKE...\"\n\n    # WireGuard客户端Peer中的Preshared key\n    pre-shared-key: \"NGYvFsCle...\"\n\n    allowed-ips:\n      - 0.0.0.0\u002F0\n\n    udp: true\n    persistent-keepalive: 25\n    mtu: 1380\n\nrules:\n  # 家庭局域网网段\n  - IP-CIDR,10.0.0.0\u002F24,家庭-WG,no-resolve\n\n  # WireGuard隧道网段\n  - IP-CIDR,10.10.10.0\u002F24,家庭-WG,no-resolve\n\n  # 其他网络流量保持直连\n  - MATCH,DIRECT\n","yaml",[21,3756,3757,3762,3767,3772,3776,3786,3796,3806,3816,3825,3829,3836,3845,3855,3864,3873,3877,3884,3897,3907,3911,3916,3926,3936,3940,3945,3951,3962,3967,3973,3984,3989,3995,4001,4012,4017,4023,4034,4039,4047,4056,4061,4071,4082,4093,4098,4106,4112,4120,4125,4131,4139,4144,4150],{"__ignoreMap":31},[35,3758,3759],{"class":37,"line":38},[35,3760,3761],{"class":989},"# 仅让家庭内网流量通过WireGuard\n",[35,3763,3764],{"class":37,"line":49},[35,3765,3766],{"class":989},"# 普通互联网流量保持直连\n",[35,3768,3769],{"class":37,"line":65},[35,3770,3771],{"class":989},"# 启用本配置时，不要同时开启独立的WireGuard客户端\n",[35,3773,3774],{"class":37,"line":73},[35,3775,1152],{"emptyLinePlaceholder":1151},[35,3777,3778,3781,3783],{"class":37,"line":81},[35,3779,3780],{"class":41},"mixed-port",[35,3782,55],{"class":45},[35,3784,3785],{"class":58},"7890\n",[35,3787,3788,3791,3793],{"class":37,"line":95},[35,3789,3790],{"class":41},"allow-lan",[35,3792,55],{"class":45},[35,3794,3795],{"class":58},"false\n",[35,3797,3798,3801,3803],{"class":37,"line":103},[35,3799,3800],{"class":41},"mode",[35,3802,55],{"class":45},[35,3804,3805],{"class":89},"rule\n",[35,3807,3808,3811,3813],{"class":37,"line":116},[35,3809,3810],{"class":41},"log-level",[35,3812,55],{"class":45},[35,3814,3815],{"class":89},"info\n",[35,3817,3818,3821,3823],{"class":37,"line":129},[35,3819,3820],{"class":41},"ipv6",[35,3822,55],{"class":45},[35,3824,358],{"class":58},[35,3826,3827],{"class":37,"line":141},[35,3828,1152],{"emptyLinePlaceholder":1151},[35,3830,3831,3834],{"class":37,"line":149},[35,3832,3833],{"class":41},"tun",[35,3835,327],{"class":45},[35,3837,3838,3841,3843],{"class":37,"line":157},[35,3839,3840],{"class":41},"  enable",[35,3842,55],{"class":45},[35,3844,358],{"class":58},[35,3846,3847,3850,3852],{"class":37,"line":165},[35,3848,3849],{"class":41},"  stack",[35,3851,55],{"class":45},[35,3853,3854],{"class":89},"mixed\n",[35,3856,3857,3860,3862],{"class":37,"line":178},[35,3858,3859],{"class":41},"  auto-route",[35,3861,55],{"class":45},[35,3863,358],{"class":58},[35,3865,3866,3869,3871],{"class":37,"line":191},[35,3867,3868],{"class":41},"  auto-detect-interface",[35,3870,55],{"class":45},[35,3872,358],{"class":58},[35,3874,3875],{"class":37,"line":199},[35,3876,1152],{"emptyLinePlaceholder":1151},[35,3878,3879,3882],{"class":37,"line":212},[35,3880,3881],{"class":41},"proxies",[35,3883,327],{"class":45},[35,3885,3886,3889,3892,3894],{"class":37,"line":225},[35,3887,3888],{"class":45},"  - ",[35,3890,3891],{"class":41},"name",[35,3893,55],{"class":45},[35,3895,3896],{"class":89},"家庭-WG\n",[35,3898,3899,3902,3904],{"class":37,"line":233},[35,3900,3901],{"class":41},"    type",[35,3903,55],{"class":45},[35,3905,3906],{"class":89},"wireguard\n",[35,3908,3909],{"class":37,"line":246},[35,3910,1152],{"emptyLinePlaceholder":1151},[35,3912,3913],{"class":37,"line":259},[35,3914,3915],{"class":989},"    # WireGuard客户端Peer中的Endpoint\n",[35,3917,3918,3921,3923],{"class":37,"line":272},[35,3919,3920],{"class":41},"    server",[35,3922,55],{"class":45},[35,3924,3925],{"class":89},"ddns.example.com\n",[35,3927,3928,3931,3933],{"class":37,"line":285},[35,3929,3930],{"class":41},"    port",[35,3932,55],{"class":45},[35,3934,3935],{"class":58},"51820\n",[35,3937,3938],{"class":37,"line":293},[35,3939,1152],{"emptyLinePlaceholder":1151},[35,3941,3942],{"class":37,"line":305},[35,3943,3944],{"class":989},"    # WireGuard客户端Interface中的Addresses\n",[35,3946,3948],{"class":37,"line":3947},26,[35,3949,3950],{"class":989},"    # 例如原配置为10.10.10.2\u002F32，这里只填写10.10.10.2\n",[35,3952,3954,3957,3959],{"class":37,"line":3953},27,[35,3955,3956],{"class":41},"    ip",[35,3958,55],{"class":45},[35,3960,3961],{"class":58},"10.10.10.2\n",[35,3963,3965],{"class":37,"line":3964},28,[35,3966,1152],{"emptyLinePlaceholder":1151},[35,3968,3970],{"class":37,"line":3969},29,[35,3971,3972],{"class":989},"    # WireGuard客户端Interface中的Private key\n",[35,3974,3976,3979,3981],{"class":37,"line":3975},30,[35,3977,3978],{"class":41},"    private-key",[35,3980,55],{"class":45},[35,3982,3983],{"class":89},"\"gBzeTbZH...\"\n",[35,3985,3987],{"class":37,"line":3986},31,[35,3988,1152],{"emptyLinePlaceholder":1151},[35,3990,3992],{"class":37,"line":3991},32,[35,3993,3994],{"class":989},"    # WireGuard客户端Peer中的Public key，即服务器公钥\n",[35,3996,3998],{"class":37,"line":3997},33,[35,3999,4000],{"class":989},"    # 不要填写Interface中的客户端公钥\n",[35,4002,4004,4007,4009],{"class":37,"line":4003},34,[35,4005,4006],{"class":41},"    public-key",[35,4008,55],{"class":45},[35,4010,4011],{"class":89},"\"UUS0nrKE...\"\n",[35,4013,4015],{"class":37,"line":4014},35,[35,4016,1152],{"emptyLinePlaceholder":1151},[35,4018,4020],{"class":37,"line":4019},36,[35,4021,4022],{"class":989},"    # WireGuard客户端Peer中的Preshared key\n",[35,4024,4026,4029,4031],{"class":37,"line":4025},37,[35,4027,4028],{"class":41},"    pre-shared-key",[35,4030,55],{"class":45},[35,4032,4033],{"class":89},"\"NGYvFsCle...\"\n",[35,4035,4037],{"class":37,"line":4036},38,[35,4038,1152],{"emptyLinePlaceholder":1151},[35,4040,4042,4045],{"class":37,"line":4041},39,[35,4043,4044],{"class":41},"    allowed-ips",[35,4046,327],{"class":45},[35,4048,4050,4053],{"class":37,"line":4049},40,[35,4051,4052],{"class":45},"      - ",[35,4054,4055],{"class":89},"0.0.0.0\u002F0\n",[35,4057,4059],{"class":37,"line":4058},41,[35,4060,1152],{"emptyLinePlaceholder":1151},[35,4062,4064,4067,4069],{"class":37,"line":4063},42,[35,4065,4066],{"class":41},"    udp",[35,4068,55],{"class":45},[35,4070,358],{"class":58},[35,4072,4074,4077,4079],{"class":37,"line":4073},43,[35,4075,4076],{"class":41},"    persistent-keepalive",[35,4078,55],{"class":45},[35,4080,4081],{"class":58},"25\n",[35,4083,4085,4088,4090],{"class":37,"line":4084},44,[35,4086,4087],{"class":41},"    mtu",[35,4089,55],{"class":45},[35,4091,4092],{"class":58},"1380\n",[35,4094,4096],{"class":37,"line":4095},45,[35,4097,1152],{"emptyLinePlaceholder":1151},[35,4099,4101,4104],{"class":37,"line":4100},46,[35,4102,4103],{"class":41},"rules",[35,4105,327],{"class":45},[35,4107,4109],{"class":37,"line":4108},47,[35,4110,4111],{"class":989},"  # 家庭局域网网段\n",[35,4113,4115,4117],{"class":37,"line":4114},48,[35,4116,3888],{"class":45},[35,4118,4119],{"class":89},"IP-CIDR,10.0.0.0\u002F24,家庭-WG,no-resolve\n",[35,4121,4123],{"class":37,"line":4122},49,[35,4124,1152],{"emptyLinePlaceholder":1151},[35,4126,4128],{"class":37,"line":4127},50,[35,4129,4130],{"class":989},"  # WireGuard隧道网段\n",[35,4132,4134,4136],{"class":37,"line":4133},51,[35,4135,3888],{"class":45},[35,4137,4138],{"class":89},"IP-CIDR,10.10.10.0\u002F24,家庭-WG,no-resolve\n",[35,4140,4142],{"class":37,"line":4141},52,[35,4143,1152],{"emptyLinePlaceholder":1151},[35,4145,4147],{"class":37,"line":4146},53,[35,4148,4149],{"class":989},"  # 其他网络流量保持直连\n",[35,4151,4153,4155],{"class":37,"line":4152},54,[35,4154,3888],{"class":45},[35,4156,4157],{"class":89},"MATCH,DIRECT\n",[2710,4159,4160],{"id":4160},"修改模板中的參數",[14,4162,4163],{},"需要按照自己的WireGuard配置修改以下內容。",[14,4165,4166],{},[403,4167,4168,4169],{},"1. ",[21,4170,3636],{},[14,4172,4173],{},"將：",[26,4175,4177],{"className":3752,"code":4176,"language":3754,"meta":31,"style":31},"server: ddns.example.com\n",[21,4178,4179],{"__ignoreMap":31},[35,4180,4181,4183,4185],{"class":37,"line":38},[35,4182,3636],{"class":41},[35,4184,55],{"class":45},[35,4186,3925],{"class":89},[14,4188,4189],{},"改成WireGuard客户端Peer中Endpoint冒號前面的域名或公網IP。",[14,4191,4192],{},"例如Endpoint為：",[26,4194,4197],{"className":4195,"code":4196,"language":3744,"meta":31},[3742],"ddns.example.com:51820\n",[21,4198,4196],{"__ignoreMap":31},[14,4200,4201],{},"那麼填寫：",[26,4203,4204],{"className":3752,"code":4176,"language":3754,"meta":31,"style":31},[21,4205,4206],{"__ignoreMap":31},[35,4207,4208,4210,4212],{"class":37,"line":38},[35,4209,3636],{"class":41},[35,4211,55],{"class":45},[35,4213,3925],{"class":89},[14,4215,4216],{},[403,4217,4218,4219],{},"2. ",[21,4220,3646],{},[14,4222,4223],{},"填寫Endpoint冒號後面的端口，例如：",[26,4225,4227],{"className":3752,"code":4226,"language":3754,"meta":31,"style":31},"port: 51820\n",[21,4228,4229],{"__ignoreMap":31},[35,4230,4231,4233,4235],{"class":37,"line":38},[35,4232,3646],{"class":41},[35,4234,55],{"class":45},[35,4236,3935],{"class":58},[14,4238,4239],{},[403,4240,4241,4242],{},"3. ",[21,4243,3656],{},[14,4245,4246],{},"填寫WireGuard客户端Interface中的Addresses，但不要填寫CIDR後綴。",[14,4248,4249],{},"例如原配置是：",[26,4251,4254],{"className":4252,"code":4253,"language":3744,"meta":31},[3742],"10.10.10.2\u002F32\n",[21,4255,4253],{"__ignoreMap":31},[14,4257,4258],{},"Clash Meta中填寫：",[26,4260,4262],{"className":3752,"code":4261,"language":3754,"meta":31,"style":31},"ip: 10.10.10.2\n",[21,4263,4264],{"__ignoreMap":31},[35,4265,4266,4268,4270],{"class":37,"line":38},[35,4267,3656],{"class":41},[35,4269,55],{"class":45},[35,4271,3961],{"class":58},[14,4273,4274],{},[403,4275,4276,4277],{},"4. ",[21,4278,3669],{},[14,4280,4281],{},"填寫WireGuard客户端Interface中的Private key：",[26,4283,4285],{"className":3752,"code":4284,"language":3754,"meta":31,"style":31},"private-key: \"客户端私钥\"\n",[21,4286,4287],{"__ignoreMap":31},[35,4288,4289,4291,4293],{"class":37,"line":38},[35,4290,3669],{"class":41},[35,4292,55],{"class":45},[35,4294,4295],{"class":89},"\"客户端私钥\"\n",[14,4297,4298],{},[403,4299,4300,4301],{},"5. ",[21,4302,3679],{},[14,4304,4305],{},"填寫WireGuard客户端Peer中的Public key，也就是服務器公鑰：",[26,4307,4309],{"className":3752,"code":4308,"language":3754,"meta":31,"style":31},"public-key: \"服务器公钥\"\n",[21,4310,4311],{"__ignoreMap":31},[35,4312,4313,4315,4317],{"class":37,"line":38},[35,4314,3679],{"class":41},[35,4316,55],{"class":45},[35,4318,4319],{"class":89},"\"服务器公钥\"\n",[14,4321,4322],{},"不要誤填Interface中的Public key。Interface中的Public key屬於當前客户端，Peer中的Public key才屬於服務器。",[14,4324,4325],{},[403,4326,4327,4328],{},"6. ",[21,4329,3689],{},[14,4331,4332],{},"填寫WireGuard客户端Peer中的Preshared key：",[26,4334,4336],{"className":3752,"code":4335,"language":3754,"meta":31,"style":31},"pre-shared-key: \"预共享密钥\"\n",[21,4337,4338],{"__ignoreMap":31},[35,4339,4340,4342,4344],{"class":37,"line":38},[35,4341,3689],{"class":41},[35,4343,55],{"class":45},[35,4345,4346],{"class":89},"\"预共享密钥\"\n",[14,4348,4349,4350,769],{},"WireGuard密鑰是Base64字符串，複製時不要漏掉末尾可能存在的",[21,4351,1286],{},[14,4353,4354],{},[403,4355,4356,4357],{},"7. ",[21,4358,4103],{},[14,4360,4361],{},"將規則中的家庭局域網網段和WireGuard隧道網段改成自己的實際網段。",[14,4363,4364],{},"例如：",[26,4366,4368],{"className":3752,"code":4367,"language":3754,"meta":31,"style":31},"rules:\n  - IP-CIDR,10.0.0.0\u002F24,家庭-WG,no-resolve\n  - IP-CIDR,10.10.10.0\u002F24,家庭-WG,no-resolve\n  - MATCH,DIRECT\n",[21,4369,4370,4376,4382,4388],{"__ignoreMap":31},[35,4371,4372,4374],{"class":37,"line":38},[35,4373,4103],{"class":41},[35,4375,327],{"class":45},[35,4377,4378,4380],{"class":37,"line":49},[35,4379,3888],{"class":45},[35,4381,4119],{"class":89},[35,4383,4384,4386],{"class":37,"line":65},[35,4385,3888],{"class":45},[35,4387,4138],{"class":89},[35,4389,4390,4392],{"class":37,"line":73},[35,4391,3888],{"class":45},[35,4393,4157],{"class":89},[14,4395,4396],{},"表示：",[1340,4398,4399,4405,4410],{},[488,4400,4401,4402,4404],{},"訪問",[21,4403,3180],{},"家庭局域網時走WireGuard；",[488,4406,4401,4407,4409],{},[21,4408,3401],{},"WireGuard隧道網段時走WireGuard；",[488,4411,4412],{},"其他流量全部直連，不經過家庭寬帶。",[2710,4414,4415],{"id":4415},"關於allowed-ips",[14,4417,4418],{},"模板中的：",[26,4420,4422],{"className":3752,"code":4421,"language":3754,"meta":31,"style":31},"allowed-ips:\n  - 0.0.0.0\u002F0\n",[21,4423,4424,4431],{"__ignoreMap":31},[35,4425,4426,4429],{"class":37,"line":38},[35,4427,4428],{"class":41},"allowed-ips",[35,4430,327],{"class":45},[35,4432,4433,4435],{"class":37,"line":49},[35,4434,3888],{"class":45},[35,4436,4055],{"class":89},[14,4438,4439],{},"可以保持不變。",[14,4441,4442,4443,4445],{},"它表示這個WireGuard代理節點能夠承載全部IPv4流量，但實際哪些流量交給WireGuard，仍然由最下面的",[21,4444,4103],{},"決定。",[14,4447,4364],{},[26,4449,4450],{"className":3752,"code":4367,"language":3754,"meta":31,"style":31},[21,4451,4452,4458,4464,4470],{"__ignoreMap":31},[35,4453,4454,4456],{"class":37,"line":38},[35,4455,4103],{"class":41},[35,4457,327],{"class":45},[35,4459,4460,4462],{"class":37,"line":49},[35,4461,3888],{"class":45},[35,4463,4119],{"class":89},[35,4465,4466,4468],{"class":37,"line":65},[35,4467,3888],{"class":45},[35,4469,4138],{"class":89},[35,4471,4472,4474],{"class":37,"line":73},[35,4473,3888],{"class":45},[35,4475,4157],{"class":89},[14,4477,4478],{},"在這套規則下，只有家庭內網和WireGuard隧道網段走WireGuard，其他互聯網流量繼續直連。",[14,4480,4481],{},"需要注意，WireGuard服務端Peer中的Allowed IPs仍然應該是分配給該客户端的地址，例如：",[26,4483,4485],{"className":4484,"code":4253,"language":3744,"meta":31},[3742],[21,4486,4253],{"__ignoreMap":31},[14,4488,4489,4490,769],{},"不要把WireGuard服務端Peer中的Allowed IPs改成",[21,4491,4492],{},"0.0.0.0\u002F0",[2710,4494,4495],{"id":4495},"導入並測試",[14,4497,4498],{},"將YAML文件導入支持Mihomo \u002F Clash Meta內核的客户端，然後：",[485,4500,4501,4504,4507,4510,4513],{},[488,4502,4503],{},"關閉獨立的WireGuard客户端隧道；",[488,4505,4506],{},"在Clash Meta中選擇剛才導入的配置；",[488,4508,4509],{},"使用“規則”模式；",[488,4511,4512],{},"打開Clash Meta連接開關；",[488,4514,4515],{},"訪問家庭內網設備進行測試。",[14,4517,4518],{},"例如訪問軟路由：",[26,4520,4523],{"className":4521,"code":4522,"language":3744,"meta":31},[3742],"http:\u002F\u002F10.0.0.1\n",[21,4524,4522],{"__ignoreMap":31},[14,4526,4527],{},"或者在iOS文件App中連接NAS：",[26,4529,4532],{"className":4530,"code":4531,"language":3744,"meta":31},[3742],"smb:\u002F\u002F10.0.0.5\n",[21,4533,4531],{"__ignoreMap":31},[14,4535,4536],{},"同時可以進入WireGuard服務端，查看對應Peer的Latest Handshake。",[14,4538,4539],{},"如果開啓Clash Meta後握手時間刷新，並且能夠訪問家庭內網設備，就説明配置成功。",[2710,4541,4542],{"id":4542},"常見問題",[14,4544,4545],{},"如果YAML能夠啓動，但無法產生WireGuard握手，優先檢查：",[485,4547,4548,4553,4558,4566,4571,4574,4577],{},[488,4549,4550,4552],{},[21,4551,3679],{},"是否誤填成客户端公鑰；",[488,4554,4555,4557],{},[21,4556,3669],{},"是否為當前客户端私鑰；",[488,4559,4560,4562,4563,4565],{},[21,4561,3689],{},"是否完整，末尾的",[21,4564,1286],{},"是否遺漏；",[488,4567,4568,4570],{},[21,4569,3656],{},"是否與服務端分配給該Peer的地址一致；",[488,4572,4573],{},"Endpoint域名和端口是否正確；",[488,4575,4576],{},"軟路由防火牆是否已經放行WireGuard端口；",[488,4578,4579],{},"獨立WireGuard客户端是否仍然處於開啓狀態。",[14,4581,4582],{},"如果報錯類似：",[26,4584,4587],{"className":4585,"code":4586,"language":3744,"meta":31},[3742],"decode pre shared key: illegal base64 data\n",[21,4588,4586],{"__ignoreMap":31},[14,4590,4591,4592,4594,4595,4597],{},"通常説明",[21,4593,3689],{},"複製不完整，常見原因是末尾的",[21,4596,1286],{},"被遺漏。",[2565,4599,4601],{"id":4600},"將wireguard加入包含代理節點的yaml","將WireGuard加入包含代理節點的YAML",[4603,4604,4605],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":31,"searchDepth":49,"depth":49,"links":4607},[4608,4609,4610,4611,4612,4613,4614,4615,4616],{"id":12,"depth":65,"text":12},{"id":394,"depth":65,"text":395},{"id":891,"depth":65,"text":891},{"id":1135,"depth":65,"text":1136},{"id":2208,"depth":65,"text":2209},{"id":2227,"depth":65,"text":2228},{"id":2231,"depth":65,"text":2231},{"id":2555,"depth":65,"text":2556},{"id":3158,"depth":65,"text":3159},"\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo",0,"0900","2024-03-30","wiki\u002F2024-03-30-linux-jiao-cheng","zh-hk:2024-03-30-linux-jiao-cheng","\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng","Linux教程","md","wiki\u002F2024-03-30-Linux教程\u002F0900-其他操作",false,null,"zh-HK","zh-hk",{},{"title":5,"description":31},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo","_i18n\u002Fzh-hk\u002Fwiki\u002F2024-03-30-Linux教程\u002F0900-其他操作","LL-rkHd5rII3BBmhfBQBjO5-0XD6kj-FjHqPP4Xsq_A",[4637,4642,4647,4652,4657,4662,4667,4672,4677,4678],{"path":4638,"stem":4639,"title":4640,"date":4620,"chapterOrder":4641,"chapterDepth":4618,"docKey":4622,"docRoot":4623,"docTitle":4624,"isWikiDoc":1151,"isWikiIndex":4627},"\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0100-fa-xing-ban-tui-jian","_i18n\u002Fzh-hk\u002Fwiki\u002F2024-03-30-Linux教程\u002F0100-发行版推荐","發行版推薦","0100",{"path":4643,"stem":4644,"title":4645,"date":4620,"chapterOrder":4646,"chapterDepth":4618,"docKey":4622,"docRoot":4623,"docTitle":4624,"isWikiDoc":1151,"isWikiIndex":4627},"\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0200-linux-zhuang-ji-jiao-cheng","_i18n\u002Fzh-hk\u002Fwiki\u002F2024-03-30-Linux教程\u002F0200-Linux装机教程","Linux裝機教程","0200",{"path":4648,"stem":4649,"title":4650,"date":4620,"chapterOrder":4651,"chapterDepth":4618,"docKey":4622,"docRoot":4623,"docTitle":4624,"isWikiDoc":1151,"isWikiIndex":4627},"\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0300-an-zhuang-bi-bei-pei-zhi","_i18n\u002Fzh-hk\u002Fwiki\u002F2024-03-30-Linux教程\u002F0300-安装必备配置","安裝必備配置","0300",{"path":4653,"stem":4654,"title":4655,"date":4620,"chapterOrder":4656,"chapterDepth":4618,"docKey":4622,"docRoot":4623,"docTitle":4624,"isWikiDoc":1151,"isWikiIndex":4627},"\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0400-ming-ling-jiao-cheng-chang-qi-ji-lei","_i18n\u002Fzh-hk\u002Fwiki\u002F2024-03-30-Linux教程\u002F0400-命令教程(长期积累)","命令教程(長期積累)","0400",{"path":4658,"stem":4659,"title":4660,"date":4620,"chapterOrder":4661,"chapterDepth":4618,"docKey":4622,"docRoot":4623,"docTitle":4624,"isWikiDoc":1151,"isWikiIndex":4627},"\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0500-ge-zhong-huan-jing-pei-zhi","_i18n\u002Fzh-hk\u002Fwiki\u002F2024-03-30-Linux教程\u002F0500-各种环境配置","各種環境配置","0500",{"path":4663,"stem":4664,"title":4665,"date":4620,"chapterOrder":4666,"chapterDepth":4618,"docKey":4622,"docRoot":4623,"docTitle":4624,"isWikiDoc":1151,"isWikiIndex":4627},"\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0600-qi-ta-ke-xuan-pei-zhi","_i18n\u002Fzh-hk\u002Fwiki\u002F2024-03-30-Linux教程\u002F0600-其他可选配置","其他可選配置","0600",{"path":4668,"stem":4669,"title":4670,"date":4620,"chapterOrder":4671,"chapterDepth":4618,"docKey":4622,"docRoot":4623,"docTitle":4624,"isWikiDoc":1151,"isWikiIndex":4627},"\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0700-qemu-kvm-xu-ni-ji","_i18n\u002Fzh-hk\u002Fwiki\u002F2024-03-30-Linux教程\u002F0700-QEMU-KVM虚拟机","QEMU-KVM虛擬機","0700",{"path":4673,"stem":4674,"title":4675,"date":4620,"chapterOrder":4676,"chapterDepth":4618,"docKey":4622,"docRoot":4623,"docTitle":4624,"isWikiDoc":1151,"isWikiIndex":4627},"\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0800-tuo-zhan-gong-neng","_i18n\u002Fzh-hk\u002Fwiki\u002F2024-03-30-Linux教程\u002F0800-拓展功能","拓展功能","0800",{"path":4617,"stem":4634,"title":5,"date":4620,"chapterOrder":4619,"chapterDepth":4618,"docKey":4622,"docRoot":4623,"docTitle":4624,"isWikiDoc":1151,"isWikiIndex":4627},{"path":4623,"stem":4679,"title":4624,"date":4620,"chapterOrder":4628,"chapterDepth":4618,"docKey":4622,"docRoot":4623,"docTitle":4624,"isWikiDoc":1151,"isWikiIndex":1151},"_i18n\u002Fzh-hk\u002Fwiki\u002F2024-03-30-Linux教程\u002Findex",{"variants":4681},[4682,4685,4688,4689,4692],{"path":4683,"localeSlug":4684,"i18nKey":4626},"\u002Fen-us\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo","en-us",{"path":4686,"localeSlug":4687,"i18nKey":4626},"\u002Fzh-hant\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo","zh-hant",{"path":4617,"localeSlug":4630,"i18nKey":4626},{"path":4690,"localeSlug":4691,"i18nKey":4626},"\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo","zh-tw",{"path":4693,"localeSlug":4694,"i18nKey":4626},"\u002Fzh-cn\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo","zh-cn",[4683,4633,4686,4633,4617,4633,4690,4633,4693,4633],1784646821549]