[{"data":1,"prerenderedAt":5806},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo":3,"wiki-doc-items-\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo":5746,"language-switcher-data-\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo":5790,"wiki-i18n-paths-\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo":5805},{"id":4,"title":5,"body":6,"canonicalPath":5728,"chapterDepth":5729,"chapterOrder":5730,"date":5731,"description":31,"docI18nKey":5732,"docKey":5733,"docRoot":5734,"docTitle":5735,"extension":5736,"i18nKey":5737,"isBlogPost":5738,"isWikiDoc":1151,"isWikiIndex":5738,"layout":5739,"legacyPath":5740,"locale":5741,"localeSlug":5742,"meta":5743,"navigation":1151,"path":5728,"seo":5744,"sourcePath":5740,"sourceStem":5737,"stem":5737,"wikiDepth":38,"__hash__":5745},"content\u002Fwiki\u002F2024-03-30-Linux教程\u002F0900-其他操作.md","其他操作",{"type":7,"value":8,"toc":5715},"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,3163,3171,3176,3181,3184,3188,3191,3194,3197,3200,3203,3209,3214,3217,3224,3231,3233,3236,3239,3269,3272,3276,3282,3287,3293,3298,3315,3347,3363,3366,3369,3375,3386,3391,3402,3412,3429,3434,3439,3442,3445,3448,3477,3480,3483,3532,3537,3540,3545,3548,3551,3556,3559,3564,3567,3570,3573,3576,3579,3584,3587,3590,3595,3600,3605,3609,3613,3616,3619,3630,3633,3636,3640,3643,3730,3733,3746,3752,3755,3759,3766,3772,3775,4183,4186,4189,4196,4199,4212,4215,4218,4224,4227,4239,4246,4249,4262,4269,4272,4275,4281,4284,4297,4304,4307,4321,4328,4331,4345,4348,4355,4358,4372,4377,4384,4387,4390,4419,4422,4438,4441,4444,4462,4465,4471,4473,4501,4504,4507,4512,4518,4521,4524,4541,4544,4550,4553,4559,4562,4565,4568,4571,4605,4608,4614,4623,4627,4631,4634,4637,4641,4645,4649,4652,4657,4669,4722,4727,4730,4735,4739,4742,4758,4765,4770,4777,4782,4786,4789,4803,4808,4812,4815,4821,4824,4831,4838,4946,4949,4954,4959,4962,4965,4992,4995,5000,5005,5008,5013,5019,5024,5027,5034,5040,5055,5060,5085,5105,5108,5113,5116,5201,5204,5210,5213,5217,5220,5412,5415,5421,5424,5429,5432,5435,5440,5546,5549,5554,5558,5562,5569,5575,5580,5583,5586,5591,5596,5599,5604,5609,5614,5618,5624,5629,5632,5646,5650,5655,5658,5672,5676,5681,5685,5690,5695,5698,5703,5706,5711],[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],{},"然后还有ipv6也要进行放行，那个debian一般默认ipv6不设防，但是会被上游openwrt防住，所以，要在openwrt里开启对应规则。",[14,3157,3158,3159,3162],{},"去",[21,3160,3161],{},"防火墙 - 通信规则","里添加下面俩配置。",[26,3164,3169],{"className":3165,"code":3167,"language":3168,"meta":31},[3166],"language-text","Allow-RustDesk-IPv6-TCP\nWAN → LAN\n目标：你服务器的ipv6公网\nTCP 21115-21119\n动作：接受转发\n\nAllow-RustDesk-IPv6-UDP\nWAN → LAN\n目标：你服务器的ipv6公网\nUDP 21116\n动作：接受转发\n","text",[21,3170,3167],{"__ignoreMap":31},[14,3172,3173],{},[432,3174],{"alt":31,"src":3175},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1788528028821-5f4711e7.webp",[14,3177,3178],{},[432,3179],{"alt":31,"src":3180},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1788528057933-67c6e554.webp",[14,3182,3183],{},"这样才可以让你的服务器端口被真正成功放行.",[10,3185,3187],{"id":3186},"wireguard","WireGuard",[397,3189,3190],{"id":3190},"简介",[14,3192,3193],{},"WireGuard是用于在室外通过VPN来访问内网设备的一种工具.",[14,3195,3196],{},"这里我的教程将会教你如何在室外访问你家里的内网设备.",[397,3198,3199],{"id":3199},"我的环境",[2565,3201,3202],{"id":3202},"内网",[14,3204,3205,3206],{},"家庭内网网段:",[21,3207,3208],{},"10.0.0.0\u002F24",[14,3210,3211],{},[432,3212],{"alt":2726,"src":3213},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783171015365.webp",[2565,3215,3216],{"id":3216},"外部设备",[14,3218,3219,3220,3223],{},"如果你是在办公室等地方链接办公室的wifi,那么你需要知道",[21,3221,3222],{},"室外内网网段",",如果你直接用手机数据流量的话,那么什么都不需要知道.",[14,3225,3226,3227,3230],{},"室外内网网段:",[21,3228,3229],{},"192.168.31.0\u002F24","\n室外数据流量运营商:中国联通",[397,3232,768],{"id":768},[2565,3234,3235],{"id":3235},"服务端-软路由端",[14,3237,3238],{},"SSH登录OpenWrt，或者用LuCI界面：",[26,3240,3242],{"className":580,"code":3241,"language":582,"meta":31,"style":31},"opkg update\nopkg install wireguard-tools luci-proto-wireguard kmod-wireguard qrencode\n",[21,3243,3244,3251],{"__ignoreMap":31},[35,3245,3246,3249],{"class":37,"line":38},[35,3247,3248],{"class":589},"opkg",[35,3250,2264],{"class":89},[35,3252,3253,3255,3257,3260,3263,3266],{"class":37,"line":49},[35,3254,3248],{"class":589},[35,3256,921],{"class":89},[35,3258,3259],{"class":89}," wireguard-tools",[35,3261,3262],{"class":89}," luci-proto-wireguard",[35,3264,3265],{"class":89}," kmod-wireguard",[35,3267,3268],{"class":89}," qrencode\n",[14,3270,3271],{},"装完刷新一下浏览器LuCI页面.",[2565,3273,3275],{"id":3274},"客户端-手机电脑端","客户端-手机,电脑端",[14,3277,3278],{},[2244,3279,3280],{"href":3280,"rel":3281},"https:\u002F\u002Fwww.wireguard.com\u002Finstall\u002F",[2248],[485,3283,3284],{},[488,3285,3286],{},"Android",[14,3288,3289],{},[2244,3290,3291],{"href":3291,"rel":3292},"https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.wireguard.android&hl=zh&pli=1",[2248],[485,3294,3295],{"start":49},[488,3296,3297],{},"iOS",[14,3299,3300,3301,3305,3306,3310,3311],{},"美区:",[2244,3302,3303],{"href":3303,"rel":3304},"https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Fwireguard\u002Fid1441195209",[2248],"\n日区:",[2244,3307,3308],{"href":3308,"rel":3309},"https:\u002F\u002Fapps.apple.com\u002Fjp\u002Fapp\u002Fwireguard\u002Fid1441195209",[2248],"\n台区:",[2244,3312,3313],{"href":3313,"rel":3314},"https:\u002F\u002Fapps.apple.com\u002Ftw\u002Fapp\u002Fwireguard\u002Fid1441195209",[2248],[485,3316,3317],{"start":65},[488,3318,3319,3320,3325,3342],{},"Linux",[485,3321,3322],{},[488,3323,3324],{},"Fedora",[26,3326,3328],{"className":580,"code":3327,"language":582,"meta":31,"style":31}," sudo dnf install wireguard-tools\n\n",[21,3329,3330],{"__ignoreMap":31},[35,3331,3332,3335,3337,3339],{"class":37,"line":38},[35,3333,3334],{"class":589}," sudo",[35,3336,2930],{"class":89},[35,3338,921],{"class":89},[35,3340,3341],{"class":89}," wireguard-tools\n",[485,3343,3344],{"start":49},[488,3345,3346],{},"Ubuntu\u002FDebian",[26,3348,3350],{"className":580,"code":3349,"language":582,"meta":31,"style":31},"sudo apt install wireguard\n",[21,3351,3352],{"__ignoreMap":31},[35,3353,3354,3356,3358,3360],{"class":37,"line":38},[35,3355,915],{"class":589},[35,3357,918],{"class":89},[35,3359,921],{"class":89},[35,3361,3362],{"class":89}," wireguard\n",[397,3364,3365],{"id":3365},"配置",[2565,3367,3368],{"id":3368},"服务端-初始化配置",[14,3370,3371,3372],{},"在luci界面中,点击",[21,3373,3374],{},"网络 → 接口 → 添加新接口",[485,3376,3377,3380,3383],{},[488,3378,3379],{},"协议选 WireGuard VPN",[488,3381,3382],{},"名称填 wg0",[488,3384,3385],{},"点下一步，进到详情页",[14,3387,3388],{},[432,3389],{"alt":2726,"src":3390},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783170592021.webp",[14,3392,3393,3394,3397,3398,3401],{},"按照上图的步骤,依次配置.\n这里解释一下.\n监听端口：",[21,3395,3396],{},"51820","（可自定义，使用一个未被占用的端口即可,记住这个端口,不懂的话就照我的设置）\nIP地址：",[21,3399,3400],{},"10.10.10.1\u002F24","（VPN内网网段，跟你软路由的局域网段不能冲突,不懂的话就照我的设置）",[14,3403,3404,3405,3408,3409,3411],{},"你必须确保你的",[21,3406,3407],{},"家庭内网网段","和你的",[21,3410,3222],{},"以及刚才填的那个IP地址不能属于同一网段.",[14,3413,3414,3415,3417,3418,3420,3421,3417,3423,3425,3426,2805],{},"比如我的",[21,3416,3407],{},"是",[21,3419,3208],{},",而",[21,3422,3222],{},[21,3424,3229],{},",VPN的网段",[21,3427,3428],{},"10.10.10.0\u002F24",[14,3430,3431,3432,2805],{},"然后点击防火墙设置,选择",[21,3433,3187],{},[14,3435,3436],{},[432,3437],{"alt":2726,"src":3438},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783171881431.webp",[2565,3440,3441],{"id":3441},"服务端-对端配置",[14,3443,3444],{},"这里配置的就是你的手机\u002F笔记本作为客户端连进来的信息：",[14,3446,3447],{},"这个界面很方便，LuCI可以直接帮你生成客户端的密钥对并直接导出配置文件\u002F二维码，不需要你手动在手机上先生成公钥再倒腾过来，效率高很多。按下面顺序填：",[485,3449,3450,3453,3456,3459,3462,3465,3468,3471,3474],{},[488,3451,3452],{},"描述\nphone\n（或者你自己好记的名字，比如\"iPhone17\"）",[488,3454,3455],{},"公钥 + 私钥 —— 直接点\"生成新的密钥对\"\n点这个按钮，系统会自动帮你同时生成一对新的公钥+私钥，并自动填到\"公钥\"和\"私钥\"两个框里。\n这个做法比你自己在手机App里生成再抄公钥过来省事得多，因为最后可以直接导出完整配置文件甚至二维码给手机扫码导入，私钥也是配置好的，不用手动输入。",[488,3457,3458],{},"预共享密钥(PSK) —— 建议点\"生成预共享密钥\"\n这是可选的额外加密层，加上更安全（抗未来量子计算破解），点一下\"生成预共享密钥\"按钮自动填好即可，不需要手动操作。",[488,3460,3461],{},"允许的IP\n点绿色+号，填：\n10.10.10.2\u002F32\n这是分配给这台手机的隧道内网IP（如果以后要加第二台设备，比如笔记本，就用10.10.10.3\u002F32，以此类推）。",[488,3463,3464],{},"为允许的IP创建路由 —— 勾选\n这个决定了服务端要不要给这个IP自动建路由，勾上，否则服务端不知道怎么把去往10.10.10.2的包转发给这个peer。",[488,3466,3467],{},"对端地址 (Image 2)\n这个字段填的是客户端的地址，但因为你的手机是移动设备、IP会变，服务端这边留空即可，不用填。（这个字段一般是给\"两个固定IP的服务器互联\"场景用的，你这种手机\u002F笔记本客户端场景不需要）",[488,3469,3470],{},"对端端口\n同理，留空或者保持默认51820占位符不用管，服务端这边这个字段对客户端场景没意义，跳过。",[488,3472,3473],{},"持续保持连接(Persistent Keepalive)\n填：\n25\n因为手机大概率处在NAT环境下（无论是WiFi还是4G\u002F5G），这个值能防止连接因为长时间无流量被NAT设备判定断开。",[488,3475,3476],{},"保存后 —— 点\"生成配置...\"\n这一步是重点：全部填完先点右下角\"保存\"，保存完之后再进来点 配置导出 那个\"生成配置...\"按钮，系统会：",[14,3478,3479],{},"自动生成一份完整的客户端配置文件（包含私钥、服务端公钥、Endpoint地址等全部信息）\n通常还会显示一个二维码",[14,3481,3482],{},"手机WireGuard App直接扫这个二维码就能一键导入配置，完全不用你手动输入任何字段，最省事。",[485,3484,3485],{"start":141},[488,3486,3487,3488,3490,3493,3518,3520,3521,3523,3524],{},"填完这些保存之后，点\"生成配置\"",[2857,3489],{},[432,3491],{"alt":2726,"src":3492},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783172425569.webp",[485,3494,3495,3515],{},[488,3496,3497,3498,3502,3503,3506,3507,3510,3511,3514],{},"连接端点 —— 改成DDNS域名\n没有ddns域名的请看",[2244,3499,3501],{"href":3500},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo#ddns","ddns教程",".\n现在显示的是 ",[21,3504,3505],{},"112.233.39.5"," 这个具体的公网IPv4，这是系统自动探测到的当前公网IP，但建议改成：",[21,3508,3509],{},"ddns.xxxxxx.cn","\n原因很简单：家庭宽带的公网IP大概率是动态的(如果你是中国移动,你完全不需要担心这件事情,你没有公网ipv4,你只有公网ipv6)，过一阵子运营商重新分配IP后，这个写死的IP就失效了，配置文件也就废了。用DDNS域名的话，只要你路由器上的DDNS客户端正常更新，域名自动跟着IP变化解析，配置文件永久有效，不用来回改。\n直接把这个下拉框里的值改成 ",[21,3512,3513],{},"ddns.tungchiahui.cn"," 即可，如果下拉框里没有这个选项，看能不能手动输入替换。",[488,3516,3517],{},"允许的IP —— 这个要看你的使用需求，建议改\n现在是 0.0.0.0\u002F0 + ::\u002F0，意思是全局代理模式：连上VPN后，手机\u002F电脑的所有上网流量（刷网页、看视频、聊天全部）都会先绕道回你家里，再从家里的网络出去上网。\n这跟最初的需求（\"在外面访问家里NAS\"）不太一致，全局模式的影响：",[2857,3519],{},"✅ 优点：所有流量都通过加密隧道，公共WiFi环境下更安全\n❌ 缺点：手机所有网络流量的速度都取决于你家宽带的上传带宽，如果你家是常见的百兆宽带（上传可能才几十M甚至更低），刷视频、下载会明显变慢；而且家里NAT要承担所有流量的转发压力",[2857,3522],{},"如果你只是想访问家里内网的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,3525,3526,3529],{"start":65},[488,3527,3528],{},"DNS服务器：10.0.0.1 —— 这是你家庭内网的软路由的LAN地址，连VPN后用它解析域名没问题，能顺带解析你家内网可能配置的一些本地域名",[488,3530,3531],{},"地址：10.10.10.2\u002F32 —— 这个就是你想给你的这个手机分配一个VPN网段",[14,3533,3534],{},[432,3535],{"alt":2726,"src":3536},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783173072915.webp",[14,3538,3539],{},"然后掏出手机的客户端,使用QRcode导入配置即可.",[14,3541,3542],{},[432,3543],{"alt":2726,"src":3544},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783173937724.webp",[2565,3546,3547],{"id":3547},"服务端-防火墙设置",[14,3549,3550],{},"需要加的规则\n去 网络 → 防火墙 → 通信规则(Traffic Rules)，点\"添加\"：",[14,3552,3553],{},[432,3554],{"alt":2726,"src":3555},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783173591260.webp",[14,3557,3558],{},"名称：WireGuard（随便起）\n协议：UDP 或者 TCP\u002FUDP\n源区域：wan\n目标区域：设备(输入) —— 因为WireGuard监听的是软路由本机端口，不是转发给内网其他设备\n目标端口：51820（跟你wg0接口\"监听端口\"那里填的一致）\n操作：接受(Accept)",[14,3560,3561],{},[432,3562],{"alt":2726,"src":3563},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783173651000.webp",[14,3565,3566],{},"保存，应用。",[2565,3568,3569],{"id":3569},"客户端",[14,3571,3572],{},"拿iOS举例子",[14,3574,3575],{},"我这里使用数据流量来测试,使用的是中国联通4G.",[14,3577,3578],{},"像使用普通的VPN一样打开你导入的这个配置即可.",[14,3580,3581],{},[432,3582],{"alt":2726,"src":3583},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783173983036.webp",[397,3585,3586],{"id":3586},"测试",[14,3588,3589],{},"然后可以尝试访问你的内网设备,\n比如我的\nopenwrt是10.0.0.1,\npve是10.0.0.2,\nnas是10.0.0.5都可以被正常访问了.",[14,3591,3592],{},[432,3593],{"alt":2726,"src":3594},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783174333555.webp",[14,3596,3597],{},[432,3598],{"alt":2726,"src":3599},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783174341112.webp",[14,3601,3602],{},[432,3603],{"alt":2726,"src":3604},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1783174344742.webp",[397,3606,3608],{"id":3607},"将wireguard交由clash-meta管理可选","将WireGuard交由Clash Meta管理(可选)",[2565,3610,3612],{"id":3611},"将纯wireguard配置放入clash-meta","将纯WireGuard配置放入Clash Meta",[14,3614,3615],{},"如果手机或电脑上已经长期运行支持Mihomo \u002F Clash Meta内核的客户端，再单独启动WireGuard客户端会比较麻烦，而且同一台移动设备通常不能同时启用两个VPN隧道。",[14,3617,3618],{},"因此，可以将WireGuard节点直接写入Clash Meta配置，让Clash Meta统一负责：",[485,3620,3621,3624,3627],{},[488,3622,3623],{},"普通互联网流量直连；",[488,3625,3626],{},"家庭内网流量通过WireGuard访问；",[488,3628,3629],{},"根据规则自动判断流量应该走哪个出口。",[14,3631,3632],{},"本节只介绍不包含机场或其他代理节点的纯WireGuard配置。",[14,3634,3635],{},"配置完成后，不再需要打开独立的WireGuard客户端。使用该配置时，应关闭WireGuard App中的隧道，只打开Clash Meta。",[2710,3637,3639],{"id":3638},"查看wireguard客户端参数","查看WireGuard客户端参数",[14,3641,3642],{},"先打开已经能够正常使用的WireGuard客户端配置，需要记录以下信息：",[1368,3644,3645,3655],{},[1371,3646,3647],{},[1374,3648,3649,3652],{},[1377,3650,3651],{"align":1379},"Clash Meta字段",[1377,3653,3654],{"align":1379},"WireGuard客户端中的对应字段",[1388,3656,3657,3667,3677,3690,3700,3710,3720],{},[1374,3658,3659,3664],{},[1393,3660,3661],{"align":1379},[21,3662,3663],{},"server",[1393,3665,3666],{"align":1379},"Peer中的Endpoint域名或公网IP",[1374,3668,3669,3674],{},[1393,3670,3671],{"align":1379},[21,3672,3673],{},"port",[1393,3675,3676],{"align":1379},"Peer中的Endpoint端口",[1374,3678,3679,3684],{},[1393,3680,3681],{"align":1379},[21,3682,3683],{},"ip",[1393,3685,3686,3687],{"align":1379},"Interface中的Addresses，只填写IPv4地址，不写",[21,3688,3689],{},"\u002F32",[1374,3691,3692,3697],{},[1393,3693,3694],{"align":1379},[21,3695,3696],{},"private-key",[1393,3698,3699],{"align":1379},"Interface中的Private key",[1374,3701,3702,3707],{},[1393,3703,3704],{"align":1379},[21,3705,3706],{},"public-key",[1393,3708,3709],{"align":1379},"Peer中的Public key，也就是WireGuard服务器公钥",[1374,3711,3712,3717],{},[1393,3713,3714],{"align":1379},[21,3715,3716],{},"pre-shared-key",[1393,3718,3719],{"align":1379},"Peer中的Preshared key",[1374,3721,3722,3727],{},[1393,3723,3724],{"align":1379},[21,3725,3726],{},"persistent-keepalive",[1393,3728,3729],{"align":1379},"Peer中的Persistent keepalive",[14,3731,3732],{},"这里最容易弄错的是两个公钥：",[1340,3734,3735,3741],{},[488,3736,3737,3738,3740],{},"Interface中的Public key是当前客户端的公钥，不能填入Clash Meta的",[21,3739,3706],{},"；",[488,3742,3743,3744,769],{},"Peer中的Public key才是WireGuard服务器公钥，需要填入Clash Meta的",[21,3745,3706],{},[14,3747,3748],{},[432,3749],{"alt":3750,"src":3751},"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,3753,3754],{},"这一张图同时包含Interface和Peer两部分，已经足够说明各个字段应该从哪里获取，不需要再增加其他截图。",[2710,3756,3758],{"id":3757},"创建yaml配置","创建YAML配置",[14,3760,3761,3762,3765],{},"新建一个扩展名为",[21,3763,3764],{},".yaml","的文件，例如：",[26,3767,3770],{"className":3768,"code":3769,"language":3168,"meta":31},[3166],"home-wireguard.yaml\n",[21,3771,3769],{"__ignoreMap":31},[14,3773,3774],{},"写入下面的模板：",[26,3776,3780],{"className":3777,"code":3778,"language":3779,"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,3781,3782,3787,3792,3797,3801,3811,3821,3831,3841,3850,3854,3861,3870,3880,3889,3898,3902,3909,3922,3932,3936,3941,3951,3961,3965,3970,3976,3987,3992,3998,4009,4014,4020,4026,4037,4042,4048,4059,4064,4072,4081,4086,4096,4107,4118,4123,4131,4137,4145,4150,4156,4164,4169,4175],{"__ignoreMap":31},[35,3783,3784],{"class":37,"line":38},[35,3785,3786],{"class":989},"# 仅让家庭内网流量通过WireGuard\n",[35,3788,3789],{"class":37,"line":49},[35,3790,3791],{"class":989},"# 普通互联网流量保持直连\n",[35,3793,3794],{"class":37,"line":65},[35,3795,3796],{"class":989},"# 启用本配置时，不要同时开启独立的WireGuard客户端\n",[35,3798,3799],{"class":37,"line":73},[35,3800,1152],{"emptyLinePlaceholder":1151},[35,3802,3803,3806,3808],{"class":37,"line":81},[35,3804,3805],{"class":41},"mixed-port",[35,3807,55],{"class":45},[35,3809,3810],{"class":58},"7890\n",[35,3812,3813,3816,3818],{"class":37,"line":95},[35,3814,3815],{"class":41},"allow-lan",[35,3817,55],{"class":45},[35,3819,3820],{"class":58},"false\n",[35,3822,3823,3826,3828],{"class":37,"line":103},[35,3824,3825],{"class":41},"mode",[35,3827,55],{"class":45},[35,3829,3830],{"class":89},"rule\n",[35,3832,3833,3836,3838],{"class":37,"line":116},[35,3834,3835],{"class":41},"log-level",[35,3837,55],{"class":45},[35,3839,3840],{"class":89},"info\n",[35,3842,3843,3846,3848],{"class":37,"line":129},[35,3844,3845],{"class":41},"ipv6",[35,3847,55],{"class":45},[35,3849,358],{"class":58},[35,3851,3852],{"class":37,"line":141},[35,3853,1152],{"emptyLinePlaceholder":1151},[35,3855,3856,3859],{"class":37,"line":149},[35,3857,3858],{"class":41},"tun",[35,3860,327],{"class":45},[35,3862,3863,3866,3868],{"class":37,"line":157},[35,3864,3865],{"class":41},"  enable",[35,3867,55],{"class":45},[35,3869,358],{"class":58},[35,3871,3872,3875,3877],{"class":37,"line":165},[35,3873,3874],{"class":41},"  stack",[35,3876,55],{"class":45},[35,3878,3879],{"class":89},"mixed\n",[35,3881,3882,3885,3887],{"class":37,"line":178},[35,3883,3884],{"class":41},"  auto-route",[35,3886,55],{"class":45},[35,3888,358],{"class":58},[35,3890,3891,3894,3896],{"class":37,"line":191},[35,3892,3893],{"class":41},"  auto-detect-interface",[35,3895,55],{"class":45},[35,3897,358],{"class":58},[35,3899,3900],{"class":37,"line":199},[35,3901,1152],{"emptyLinePlaceholder":1151},[35,3903,3904,3907],{"class":37,"line":212},[35,3905,3906],{"class":41},"proxies",[35,3908,327],{"class":45},[35,3910,3911,3914,3917,3919],{"class":37,"line":225},[35,3912,3913],{"class":45},"  - ",[35,3915,3916],{"class":41},"name",[35,3918,55],{"class":45},[35,3920,3921],{"class":89},"家庭-WG\n",[35,3923,3924,3927,3929],{"class":37,"line":233},[35,3925,3926],{"class":41},"    type",[35,3928,55],{"class":45},[35,3930,3931],{"class":89},"wireguard\n",[35,3933,3934],{"class":37,"line":246},[35,3935,1152],{"emptyLinePlaceholder":1151},[35,3937,3938],{"class":37,"line":259},[35,3939,3940],{"class":989},"    # WireGuard客户端Peer中的Endpoint\n",[35,3942,3943,3946,3948],{"class":37,"line":272},[35,3944,3945],{"class":41},"    server",[35,3947,55],{"class":45},[35,3949,3950],{"class":89},"ddns.example.com\n",[35,3952,3953,3956,3958],{"class":37,"line":285},[35,3954,3955],{"class":41},"    port",[35,3957,55],{"class":45},[35,3959,3960],{"class":58},"51820\n",[35,3962,3963],{"class":37,"line":293},[35,3964,1152],{"emptyLinePlaceholder":1151},[35,3966,3967],{"class":37,"line":305},[35,3968,3969],{"class":989},"    # WireGuard客户端Interface中的Addresses\n",[35,3971,3973],{"class":37,"line":3972},26,[35,3974,3975],{"class":989},"    # 例如原配置为10.10.10.2\u002F32，这里只填写10.10.10.2\n",[35,3977,3979,3982,3984],{"class":37,"line":3978},27,[35,3980,3981],{"class":41},"    ip",[35,3983,55],{"class":45},[35,3985,3986],{"class":58},"10.10.10.2\n",[35,3988,3990],{"class":37,"line":3989},28,[35,3991,1152],{"emptyLinePlaceholder":1151},[35,3993,3995],{"class":37,"line":3994},29,[35,3996,3997],{"class":989},"    # WireGuard客户端Interface中的Private key\n",[35,3999,4001,4004,4006],{"class":37,"line":4000},30,[35,4002,4003],{"class":41},"    private-key",[35,4005,55],{"class":45},[35,4007,4008],{"class":89},"\"gBzeTbZH...\"\n",[35,4010,4012],{"class":37,"line":4011},31,[35,4013,1152],{"emptyLinePlaceholder":1151},[35,4015,4017],{"class":37,"line":4016},32,[35,4018,4019],{"class":989},"    # WireGuard客户端Peer中的Public key，即服务器公钥\n",[35,4021,4023],{"class":37,"line":4022},33,[35,4024,4025],{"class":989},"    # 不要填写Interface中的客户端公钥\n",[35,4027,4029,4032,4034],{"class":37,"line":4028},34,[35,4030,4031],{"class":41},"    public-key",[35,4033,55],{"class":45},[35,4035,4036],{"class":89},"\"UUS0nrKE...\"\n",[35,4038,4040],{"class":37,"line":4039},35,[35,4041,1152],{"emptyLinePlaceholder":1151},[35,4043,4045],{"class":37,"line":4044},36,[35,4046,4047],{"class":989},"    # WireGuard客户端Peer中的Preshared key\n",[35,4049,4051,4054,4056],{"class":37,"line":4050},37,[35,4052,4053],{"class":41},"    pre-shared-key",[35,4055,55],{"class":45},[35,4057,4058],{"class":89},"\"NGYvFsCle...\"\n",[35,4060,4062],{"class":37,"line":4061},38,[35,4063,1152],{"emptyLinePlaceholder":1151},[35,4065,4067,4070],{"class":37,"line":4066},39,[35,4068,4069],{"class":41},"    allowed-ips",[35,4071,327],{"class":45},[35,4073,4075,4078],{"class":37,"line":4074},40,[35,4076,4077],{"class":45},"      - ",[35,4079,4080],{"class":89},"0.0.0.0\u002F0\n",[35,4082,4084],{"class":37,"line":4083},41,[35,4085,1152],{"emptyLinePlaceholder":1151},[35,4087,4089,4092,4094],{"class":37,"line":4088},42,[35,4090,4091],{"class":41},"    udp",[35,4093,55],{"class":45},[35,4095,358],{"class":58},[35,4097,4099,4102,4104],{"class":37,"line":4098},43,[35,4100,4101],{"class":41},"    persistent-keepalive",[35,4103,55],{"class":45},[35,4105,4106],{"class":58},"25\n",[35,4108,4110,4113,4115],{"class":37,"line":4109},44,[35,4111,4112],{"class":41},"    mtu",[35,4114,55],{"class":45},[35,4116,4117],{"class":58},"1380\n",[35,4119,4121],{"class":37,"line":4120},45,[35,4122,1152],{"emptyLinePlaceholder":1151},[35,4124,4126,4129],{"class":37,"line":4125},46,[35,4127,4128],{"class":41},"rules",[35,4130,327],{"class":45},[35,4132,4134],{"class":37,"line":4133},47,[35,4135,4136],{"class":989},"  # 家庭局域网网段\n",[35,4138,4140,4142],{"class":37,"line":4139},48,[35,4141,3913],{"class":45},[35,4143,4144],{"class":89},"IP-CIDR,10.0.0.0\u002F24,家庭-WG,no-resolve\n",[35,4146,4148],{"class":37,"line":4147},49,[35,4149,1152],{"emptyLinePlaceholder":1151},[35,4151,4153],{"class":37,"line":4152},50,[35,4154,4155],{"class":989},"  # WireGuard隧道网段\n",[35,4157,4159,4161],{"class":37,"line":4158},51,[35,4160,3913],{"class":45},[35,4162,4163],{"class":89},"IP-CIDR,10.10.10.0\u002F24,家庭-WG,no-resolve\n",[35,4165,4167],{"class":37,"line":4166},52,[35,4168,1152],{"emptyLinePlaceholder":1151},[35,4170,4172],{"class":37,"line":4171},53,[35,4173,4174],{"class":989},"  # 其他网络流量保持直连\n",[35,4176,4178,4180],{"class":37,"line":4177},54,[35,4179,3913],{"class":45},[35,4181,4182],{"class":89},"MATCH,DIRECT\n",[2710,4184,4185],{"id":4185},"修改模板中的参数",[14,4187,4188],{},"需要按照自己的WireGuard配置修改以下内容。",[14,4190,4191],{},[403,4192,4193,4194],{},"1. ",[21,4195,3663],{},[14,4197,4198],{},"将：",[26,4200,4202],{"className":3777,"code":4201,"language":3779,"meta":31,"style":31},"server: ddns.example.com\n",[21,4203,4204],{"__ignoreMap":31},[35,4205,4206,4208,4210],{"class":37,"line":38},[35,4207,3663],{"class":41},[35,4209,55],{"class":45},[35,4211,3950],{"class":89},[14,4213,4214],{},"改成WireGuard客户端Peer中Endpoint冒号前面的域名或公网IP。",[14,4216,4217],{},"例如Endpoint为：",[26,4219,4222],{"className":4220,"code":4221,"language":3168,"meta":31},[3166],"ddns.example.com:51820\n",[21,4223,4221],{"__ignoreMap":31},[14,4225,4226],{},"那么填写：",[26,4228,4229],{"className":3777,"code":4201,"language":3779,"meta":31,"style":31},[21,4230,4231],{"__ignoreMap":31},[35,4232,4233,4235,4237],{"class":37,"line":38},[35,4234,3663],{"class":41},[35,4236,55],{"class":45},[35,4238,3950],{"class":89},[14,4240,4241],{},[403,4242,4243,4244],{},"2. ",[21,4245,3673],{},[14,4247,4248],{},"填写Endpoint冒号后面的端口，例如：",[26,4250,4252],{"className":3777,"code":4251,"language":3779,"meta":31,"style":31},"port: 51820\n",[21,4253,4254],{"__ignoreMap":31},[35,4255,4256,4258,4260],{"class":37,"line":38},[35,4257,3673],{"class":41},[35,4259,55],{"class":45},[35,4261,3960],{"class":58},[14,4263,4264],{},[403,4265,4266,4267],{},"3. ",[21,4268,3683],{},[14,4270,4271],{},"填写WireGuard客户端Interface中的Addresses，但不要填写CIDR后缀。",[14,4273,4274],{},"例如原配置是：",[26,4276,4279],{"className":4277,"code":4278,"language":3168,"meta":31},[3166],"10.10.10.2\u002F32\n",[21,4280,4278],{"__ignoreMap":31},[14,4282,4283],{},"Clash Meta中填写：",[26,4285,4287],{"className":3777,"code":4286,"language":3779,"meta":31,"style":31},"ip: 10.10.10.2\n",[21,4288,4289],{"__ignoreMap":31},[35,4290,4291,4293,4295],{"class":37,"line":38},[35,4292,3683],{"class":41},[35,4294,55],{"class":45},[35,4296,3986],{"class":58},[14,4298,4299],{},[403,4300,4301,4302],{},"4. ",[21,4303,3696],{},[14,4305,4306],{},"填写WireGuard客户端Interface中的Private key：",[26,4308,4310],{"className":3777,"code":4309,"language":3779,"meta":31,"style":31},"private-key: \"客户端私钥\"\n",[21,4311,4312],{"__ignoreMap":31},[35,4313,4314,4316,4318],{"class":37,"line":38},[35,4315,3696],{"class":41},[35,4317,55],{"class":45},[35,4319,4320],{"class":89},"\"客户端私钥\"\n",[14,4322,4323],{},[403,4324,4325,4326],{},"5. ",[21,4327,3706],{},[14,4329,4330],{},"填写WireGuard客户端Peer中的Public key，也就是服务器公钥：",[26,4332,4334],{"className":3777,"code":4333,"language":3779,"meta":31,"style":31},"public-key: \"服务器公钥\"\n",[21,4335,4336],{"__ignoreMap":31},[35,4337,4338,4340,4342],{"class":37,"line":38},[35,4339,3706],{"class":41},[35,4341,55],{"class":45},[35,4343,4344],{"class":89},"\"服务器公钥\"\n",[14,4346,4347],{},"不要误填Interface中的Public key。Interface中的Public key属于当前客户端，Peer中的Public key才属于服务器。",[14,4349,4350],{},[403,4351,4352,4353],{},"6. ",[21,4354,3716],{},[14,4356,4357],{},"填写WireGuard客户端Peer中的Preshared key：",[26,4359,4361],{"className":3777,"code":4360,"language":3779,"meta":31,"style":31},"pre-shared-key: \"预共享密钥\"\n",[21,4362,4363],{"__ignoreMap":31},[35,4364,4365,4367,4369],{"class":37,"line":38},[35,4366,3716],{"class":41},[35,4368,55],{"class":45},[35,4370,4371],{"class":89},"\"预共享密钥\"\n",[14,4373,4374,4375,769],{},"WireGuard密钥是Base64字符串，复制时不要漏掉末尾可能存在的",[21,4376,1286],{},[14,4378,4379],{},[403,4380,4381,4382],{},"7. ",[21,4383,4128],{},[14,4385,4386],{},"将规则中的家庭局域网网段和WireGuard隧道网段改成自己的实际网段。",[14,4388,4389],{},"例如：",[26,4391,4393],{"className":3777,"code":4392,"language":3779,"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,4394,4395,4401,4407,4413],{"__ignoreMap":31},[35,4396,4397,4399],{"class":37,"line":38},[35,4398,4128],{"class":41},[35,4400,327],{"class":45},[35,4402,4403,4405],{"class":37,"line":49},[35,4404,3913],{"class":45},[35,4406,4144],{"class":89},[35,4408,4409,4411],{"class":37,"line":65},[35,4410,3913],{"class":45},[35,4412,4163],{"class":89},[35,4414,4415,4417],{"class":37,"line":73},[35,4416,3913],{"class":45},[35,4418,4182],{"class":89},[14,4420,4421],{},"表示：",[1340,4423,4424,4430,4435],{},[488,4425,4426,4427,4429],{},"访问",[21,4428,3208],{},"家庭局域网时走WireGuard；",[488,4431,4426,4432,4434],{},[21,4433,3428],{},"WireGuard隧道网段时走WireGuard；",[488,4436,4437],{},"其他流量全部直连，不经过家庭宽带。",[2710,4439,4440],{"id":4440},"关于allowed-ips",[14,4442,4443],{},"模板中的：",[26,4445,4447],{"className":3777,"code":4446,"language":3779,"meta":31,"style":31},"allowed-ips:\n  - 0.0.0.0\u002F0\n",[21,4448,4449,4456],{"__ignoreMap":31},[35,4450,4451,4454],{"class":37,"line":38},[35,4452,4453],{"class":41},"allowed-ips",[35,4455,327],{"class":45},[35,4457,4458,4460],{"class":37,"line":49},[35,4459,3913],{"class":45},[35,4461,4080],{"class":89},[14,4463,4464],{},"可以保持不变。",[14,4466,4467,4468,4470],{},"它表示这个WireGuard代理节点能够承载全部IPv4流量，但实际哪些流量交给WireGuard，仍然由最下面的",[21,4469,4128],{},"决定。",[14,4472,4389],{},[26,4474,4475],{"className":3777,"code":4392,"language":3779,"meta":31,"style":31},[21,4476,4477,4483,4489,4495],{"__ignoreMap":31},[35,4478,4479,4481],{"class":37,"line":38},[35,4480,4128],{"class":41},[35,4482,327],{"class":45},[35,4484,4485,4487],{"class":37,"line":49},[35,4486,3913],{"class":45},[35,4488,4144],{"class":89},[35,4490,4491,4493],{"class":37,"line":65},[35,4492,3913],{"class":45},[35,4494,4163],{"class":89},[35,4496,4497,4499],{"class":37,"line":73},[35,4498,3913],{"class":45},[35,4500,4182],{"class":89},[14,4502,4503],{},"在这套规则下，只有家庭内网和WireGuard隧道网段走WireGuard，其他互联网流量继续直连。",[14,4505,4506],{},"需要注意，WireGuard服务端Peer中的Allowed IPs仍然应该是分配给该客户端的地址，例如：",[26,4508,4510],{"className":4509,"code":4278,"language":3168,"meta":31},[3166],[21,4511,4278],{"__ignoreMap":31},[14,4513,4514,4515,769],{},"不要把WireGuard服务端Peer中的Allowed IPs改成",[21,4516,4517],{},"0.0.0.0\u002F0",[2710,4519,4520],{"id":4520},"导入并测试",[14,4522,4523],{},"将YAML文件导入支持Mihomo \u002F Clash Meta内核的客户端，然后：",[485,4525,4526,4529,4532,4535,4538],{},[488,4527,4528],{},"关闭独立的WireGuard客户端隧道；",[488,4530,4531],{},"在Clash Meta中选择刚才导入的配置；",[488,4533,4534],{},"使用“规则”模式；",[488,4536,4537],{},"打开Clash Meta连接开关；",[488,4539,4540],{},"访问家庭内网设备进行测试。",[14,4542,4543],{},"例如访问软路由：",[26,4545,4548],{"className":4546,"code":4547,"language":3168,"meta":31},[3166],"http:\u002F\u002F10.0.0.1\n",[21,4549,4547],{"__ignoreMap":31},[14,4551,4552],{},"或者在iOS文件App中连接NAS：",[26,4554,4557],{"className":4555,"code":4556,"language":3168,"meta":31},[3166],"smb:\u002F\u002F10.0.0.5\n",[21,4558,4556],{"__ignoreMap":31},[14,4560,4561],{},"同时可以进入WireGuard服务端，查看对应Peer的Latest Handshake。",[14,4563,4564],{},"如果开启Clash Meta后握手时间刷新，并且能够访问家庭内网设备，就说明配置成功。",[2710,4566,4567],{"id":4567},"常见问题",[14,4569,4570],{},"如果YAML能够启动，但无法产生WireGuard握手，优先检查：",[485,4572,4573,4578,4583,4591,4596,4599,4602],{},[488,4574,4575,4577],{},[21,4576,3706],{},"是否误填成客户端公钥；",[488,4579,4580,4582],{},[21,4581,3696],{},"是否为当前客户端私钥；",[488,4584,4585,4587,4588,4590],{},[21,4586,3716],{},"是否完整，末尾的",[21,4589,1286],{},"是否遗漏；",[488,4592,4593,4595],{},[21,4594,3683],{},"是否与服务端分配给该Peer的地址一致；",[488,4597,4598],{},"Endpoint域名和端口是否正确；",[488,4600,4601],{},"软路由防火墙是否已经放行WireGuard端口；",[488,4603,4604],{},"独立WireGuard客户端是否仍然处于开启状态。",[14,4606,4607],{},"如果报错类似：",[26,4609,4612],{"className":4610,"code":4611,"language":3168,"meta":31},[3166],"decode pre shared key: illegal base64 data\n",[21,4613,4611],{"__ignoreMap":31},[14,4615,4616,4617,4619,4620,4622],{},"通常说明",[21,4618,3716],{},"复制不完整，常见原因是末尾的",[21,4621,1286],{},"被遗漏。",[2565,4624,4626],{"id":4625},"将wireguard加入包含代理节点的yaml","将WireGuard加入包含代理节点的YAML",[10,4628,4630],{"id":4629},"alist","Alist",[397,4632,3190],{"id":4633},"简介-1",[397,4635,768],{"id":4636},"安装-1",[397,4638,4640],{"id":4639},"webui","WebUI",[397,4642,4644],{"id":4643},"s3协议","S3协议",[2565,4646,4648],{"id":4647},"开启s3","开启S3",[14,4650,4651],{},"先进行使能S3协议。",[14,4653,4654],{},[432,4655],{"alt":31,"src":4656},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787154451682-f5d538c1.webp",[14,4658,3158,4659,4662,4663,4666,4667,769],{},[21,4660,4661],{},"\u002Fopt\u002F1panel\u002Fapps\u002Falist\u002Falist\u002Fdata\u002Fdata","目录修改掉如下图的设置从",[21,4664,4665],{},"false","改成",[21,4668,124],{},[26,4670,4674],{"className":4671,"code":4672,"language":4673,"meta":31,"style":31},"language-json shiki shiki-themes github-light github-dark","\"s3\": {\n  \"enable\": true,\n  \"port\": 5246,\n  \"ssl\": false\n}\n","json",[21,4675,4676,4684,4696,4708,4717],{"__ignoreMap":31},[35,4677,4678,4681],{"class":37,"line":38},[35,4679,4680],{"class":89},"\"s3\"",[35,4682,4683],{"class":45},": {\n",[35,4685,4686,4689,4691,4693],{"class":37,"line":49},[35,4687,4688],{"class":58},"  \"enable\"",[35,4690,55],{"class":45},[35,4692,124],{"class":58},[35,4694,4695],{"class":45},",\n",[35,4697,4698,4701,4703,4706],{"class":37,"line":65},[35,4699,4700],{"class":58},"  \"port\"",[35,4702,55],{"class":45},[35,4704,4705],{"class":58},"5246",[35,4707,4695],{"class":45},[35,4709,4710,4713,4715],{"class":37,"line":73},[35,4711,4712],{"class":58},"  \"ssl\"",[35,4714,55],{"class":45},[35,4716,3820],{"class":58},[35,4718,4719],{"class":37,"line":81},[35,4720,4721],{"class":45},"}\n",[14,4723,4724],{},[432,4725],{"alt":31,"src":4726},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787154352253-3de75e7f.webp",[14,4728,4729],{},"最后点击重启。",[14,4731,4732],{},[432,4733],{"alt":31,"src":4734},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787154532487-c9f49f91.webp",[2565,4736,4738],{"id":4737},"测试s3链接","测试S3链接",[14,4740,4741],{},"在部署AList服务器本身敲",[26,4743,4745],{"className":580,"code":4744,"language":582,"meta":31,"style":31},"curl -i http:\u002F\u002F127.0.0.1:5246\u002F\n",[21,4746,4747],{"__ignoreMap":31},[35,4748,4749,4752,4755],{"class":37,"line":38},[35,4750,4751],{"class":589},"curl",[35,4753,4754],{"class":58}," -i",[35,4756,4757],{"class":89}," http:\u002F\u002F127.0.0.1:5246\u002F\n",[14,4759,4760,4761,4764],{},"如果显示",[21,4762,4763],{},"HTTP\u002F1.1 200 OK","，那证明是OK的。",[14,4766,4767],{},[432,4768],{"alt":31,"src":4769},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787154636455-dff7a529.webp",[14,4771,4772,4773,4776],{},"后续我也把他反向代理成了一个域名",[21,4774,4775],{},"s3.tungchiahui.cn","，经测试，也没毛病：",[14,4778,4779],{},[432,4780],{"alt":31,"src":4781},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787155243623-c19dfc25.webp",[2565,4783,4785],{"id":4784},"配置s3","配置S3",[14,4787,4788],{},"在AList的管理界面找到设置里的S3,然后点底下的Add来添加哪个路径为桶：",[1340,4790,4791,4794,4797,4800],{},[488,4792,4793],{},"Name就是桶的名字",[488,4795,4796],{},"Path是你想让AList的哪个路径作为桶子的根目录",[488,4798,4799],{},"S3 access key id 是S3授权ID",[488,4801,4802],{},"S3 secret access key是S3授权密钥",[14,4804,4805],{},[432,4806],{"alt":31,"src":4807},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787154999413-e747a0fd.webp",[2565,4809,4811],{"id":4810},"测试s3","测试S3",[14,4813,4814],{},"先准备好你的配置",[26,4816,4819],{"className":4817,"code":4818,"language":3168,"meta":31},[3166],"Endpoint:\nhttp:\u002F\u002F127.0.0.1:5246\n或者\nhttps:\u002F\u002Fs3.tungchiahui.cn\n\nBucket:\nObjectStorage\n\nAccess Key:\nAList 后台生成的 S3 Access Key ID\n\nSecret Key:\nAList 后台生成的 S3 Secret Access Key\n\nRegion:\nus-east-1\n",[21,4820,4818],{"__ignoreMap":31},[14,4822,4823],{},"使用一个可以使用S3的软件，比如我使用我做的VScode插件来进行测试。",[14,4825,4826,4827],{},"插件链接如下：\n",[2244,4828,4829],{"href":4829,"rel":4830},"https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=tungchiahui.md-image-uploader",[2248],[14,4832,4833,4834,4837],{},"我把配置填到了VScode中的",[21,4835,4836],{},"settings.json","使用我的插件进行了测试：",[26,4839,4841],{"className":4671,"code":4840,"language":4673,"meta":31,"style":31},"{\n  \"mdImageUploader.s3.accessKeyId\": \"2Vxxxxxxxxxxxxxxxxxxxxxx\",\n  \"mdImageUploader.s3.secretAccessKey\": \"FWx6xxxxxxxxxxxxxxxxxx\",\n  \"mdImageUploader.s3.endpoint\": \"https:\u002F\u002Fs3.tungchiahui.cn\",\n  \"mdImageUploader.s3.region\": \"us-east-1\",\n  \"mdImageUploader.s3.bucket\": \"ObjectStorage\",\n  \"mdImageUploader.cdnUrl\": \"https:\u002F\u002Fcdn.tungchiahui.cn\",\n  \"mdImageUploader.datedUploadPath\": \"\u002Ftungwebsite\u002Fassets\u002Fimages\",\n  \"mdImageUploader.undatedUploadPath\": \"\u002Ftungwebsite\u002Fassets\u002Fimages\u002Fundate\"\n}\n",[21,4842,4843,4848,4860,4872,4884,4896,4908,4920,4932,4942],{"__ignoreMap":31},[35,4844,4845],{"class":37,"line":38},[35,4846,4847],{"class":45},"{\n",[35,4849,4850,4853,4855,4858],{"class":37,"line":49},[35,4851,4852],{"class":58},"  \"mdImageUploader.s3.accessKeyId\"",[35,4854,55],{"class":45},[35,4856,4857],{"class":89},"\"2Vxxxxxxxxxxxxxxxxxxxxxx\"",[35,4859,4695],{"class":45},[35,4861,4862,4865,4867,4870],{"class":37,"line":65},[35,4863,4864],{"class":58},"  \"mdImageUploader.s3.secretAccessKey\"",[35,4866,55],{"class":45},[35,4868,4869],{"class":89},"\"FWx6xxxxxxxxxxxxxxxxxx\"",[35,4871,4695],{"class":45},[35,4873,4874,4877,4879,4882],{"class":37,"line":73},[35,4875,4876],{"class":58},"  \"mdImageUploader.s3.endpoint\"",[35,4878,55],{"class":45},[35,4880,4881],{"class":89},"\"https:\u002F\u002Fs3.tungchiahui.cn\"",[35,4883,4695],{"class":45},[35,4885,4886,4889,4891,4894],{"class":37,"line":81},[35,4887,4888],{"class":58},"  \"mdImageUploader.s3.region\"",[35,4890,55],{"class":45},[35,4892,4893],{"class":89},"\"us-east-1\"",[35,4895,4695],{"class":45},[35,4897,4898,4901,4903,4906],{"class":37,"line":95},[35,4899,4900],{"class":58},"  \"mdImageUploader.s3.bucket\"",[35,4902,55],{"class":45},[35,4904,4905],{"class":89},"\"ObjectStorage\"",[35,4907,4695],{"class":45},[35,4909,4910,4913,4915,4918],{"class":37,"line":103},[35,4911,4912],{"class":58},"  \"mdImageUploader.cdnUrl\"",[35,4914,55],{"class":45},[35,4916,4917],{"class":89},"\"https:\u002F\u002Fcdn.tungchiahui.cn\"",[35,4919,4695],{"class":45},[35,4921,4922,4925,4927,4930],{"class":37,"line":116},[35,4923,4924],{"class":58},"  \"mdImageUploader.datedUploadPath\"",[35,4926,55],{"class":45},[35,4928,4929],{"class":89},"\"\u002Ftungwebsite\u002Fassets\u002Fimages\"",[35,4931,4695],{"class":45},[35,4933,4934,4937,4939],{"class":37,"line":129},[35,4935,4936],{"class":58},"  \"mdImageUploader.undatedUploadPath\"",[35,4938,55],{"class":45},[35,4940,4941],{"class":89},"\"\u002Ftungwebsite\u002Fassets\u002Fimages\u002Fundate\"\n",[35,4943,4944],{"class":37,"line":141},[35,4945,4721],{"class":45},[14,4947,4948],{},"经过测试，文件已经成功被保存到了桶子里。",[14,4950,4951],{},[432,4952],{"alt":31,"src":4953},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787156017266-fa0d943f.webp",[14,4955,4956],{},[432,4957],{"alt":31,"src":4958},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787156156306-94170611.webp",[2565,4960,4961],{"id":4961},"创建文件直链",[14,4963,4964],{},"去AList后台",[26,4966,4970],{"className":4967,"code":4968,"language":4969,"meta":31,"style":31},"language-test shiki shiki-themes github-light github-dark","管理\n→ 设置\n→ 全局\n→ 关闭Sign All\n","test",[21,4971,4972,4977,4982,4987],{"__ignoreMap":31},[35,4973,4974],{"class":37,"line":38},[35,4975,4976],{},"管理\n",[35,4978,4979],{"class":37,"line":49},[35,4980,4981],{},"→ 设置\n",[35,4983,4984],{"class":37,"line":65},[35,4985,4986],{},"→ 全局\n",[35,4988,4989],{"class":37,"line":73},[35,4990,4991],{},"→ 关闭Sign All\n",[14,4993,4994],{},"如果开着 Sign All，关掉。因为只要全局 Sign All 开着，下面单独存储关签名也没用。AList 官方明确说 Sign All 会给所有文件直链添加签名。",[14,4996,4997],{},[432,4998],{"alt":31,"src":4999},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787156596929-05141566.webp",[14,5001,5002],{},[432,5003],{"alt":31,"src":5004},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787156612532-01b09796.webp",[14,5006,5007],{},"然后找到你的存放AList的桶子的存储地点进行编辑。",[14,5009,5010],{},[432,5011],{"alt":31,"src":5012},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787156652655-1141dad8.webp",[14,5014,5015,5016,769],{},"关闭",[21,5017,5018],{},"启用签名 \u002F Enable signing",[14,5020,5021],{},[432,5022],{"alt":31,"src":5023},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787156722613-8c9e13a7.webp",[14,5025,5026],{},"然后保存。",[14,5028,5029,5030,5033],{},"然后你可以通过",[21,5031,5032],{},"![](https:\u002F\u002Falist.tungchiahui.cn\u002Fd\u002FAList文件的路径\u002F文件名.webp)","来访问文件了。",[14,5035,5036,5039],{},[403,5037,5038],{},"高阶操作（可选）","：",[14,5041,5042,5043,5046,5047,5050,5051,5054],{},"把",[21,5044,5045],{},"cdn.tungchiahui.cn","也和",[21,5048,5049],{},"alist.tungchiahui.cn","同源，然后在腾讯云edgeone里加速，在规则引擎里新加一个",[21,5052,5053],{},"cdn路径前缀增加","的规则。",[14,5056,5057],{},[432,5058],{"alt":31,"src":5059},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787159371048-e2e3749f.webp",[1340,5061,5062,5067,5073,5079],{},[488,5063,5064,5065],{},"HOST选择",[21,5066,5045],{},[488,5068,5069,5070],{},"操作选",[21,5071,5072],{},"回源URL重写",[488,5074,5075,5076],{},"类型选",[21,5077,5078],{},"增加路径前缀",[488,5080,5081,5082],{},"增加路径前缀选",[21,5083,5084],{},"\u002Fd\u002FAList文件的多余路径\u002F",[14,5086,5087,5088,5090,5091,5094,5095,5097,5098,5101,5102,769],{},"比如",[21,5089,5078],{},"我填的",[21,5092,5093],{},"\u002Fd\u002FNAS\u002FObjectStorage","，\n那么我用",[21,5096,5059],{},"\n将会同等于",[21,5099,5100],{},"https:\u002F\u002Falist.tungchiahui.cn\u002Fd\u002FNAS\u002FObjectStorage\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787159371048-e2e3749f.webp",",\n都会回源到我的",[21,5103,5104],{},"https:\u002F\u002F服务器ip地址\u002Fd\u002FNAS\u002FObjectStorage\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787159371048-e2e3749f.webp",[14,5106,5107],{},"再设置一个缓存规则：",[14,5109,5110],{},[432,5111],{"alt":31,"src":5112},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787160214979-6bf621c3.webp",[14,5114,5115],{},"缓存规则可以这样理解：",[1340,5117,5118,5126,5134,5151,5166,5174],{},[488,5119,5120,5123,5125],{},[403,5121,5122],{},"节点缓存 TTL：30 天",[2857,5124],{},"\nEdgeOne 会把图片缓存到边缘节点 30 天。后续访问优先从 CDN 节点返回，可以明显减少 AList、服务器 和 服务器宽带 的压力。",[488,5127,5128,5131,5133],{},[403,5129,5130],{},"强制缓存：关闭",[2857,5132],{},"\n保持关闭更稳妥。如果源站明确要求某些资源不要缓存，EdgeOne 会尊重源站设置，避免把特殊资源错误缓存。",[488,5135,5136,5139,5141,5142,5148,5150],{},[403,5137,5138],{},"Cache Key：查询字符串全部忽略",[2857,5140],{},"\n例如：",[26,5143,5146],{"className":5144,"code":5145,"language":3168,"meta":31},[3166],"xxx.webp\nxxx.webp?a=1\nxxx.webp?a=2\nxxx.webp?a=3\n",[21,5147,5145],{"__ignoreMap":31},[2857,5149],{},"都会被认为是同一个缓存资源。这样可以防止别人不断修改 URL 参数绕过缓存，反复回源打你的 AList 和 服务器，而我这里文件还存储在NAS上，也会进一步防止他反复打我的NAS。",[488,5152,5153,5156,5158,5161,5162,5165],{},[403,5154,5155],{},"忽略大小写：关闭",[2857,5157],{},[21,5159,5160],{},"abc.webp"," 和 ",[21,5163,5164],{},"ABC.webp"," 会被当成两个不同文件，避免不同文件被错误合并到同一个缓存。",[488,5167,5168,5171,5173],{},[403,5169,5170],{},"PHP \u002F JSP \u002F ASP \u002F ASPX：不缓存",[2857,5172],{},"\n这些通常属于动态页面，单独设为不缓存可以防止动态内容被 CDN 长时间缓存。对于纯图片 CDN 来说基本属于防呆设置。",[488,5175,5176,5179,5181,5184,5185,5184,5188,5184,5191,5184,5194,5184,5197,5200],{},[403,5177,5178],{},"图片浏览器缓存 TTL：1 天",[2857,5180],{},[21,5182,5183],{},"jpg","、",[21,5186,5187],{},"png",[21,5189,5190],{},"gif",[21,5192,5193],{},"bmp",[21,5195,5196],{},"svg",[21,5198,5199],{},"webp"," 等图片会在用户浏览器中缓存 1 天。用户短时间内重复访问时，浏览器可以直接读取本地缓存，连 EdgeOne 都不用重新请求。",[14,5202,5203],{},"最终缓存链路大致如下：",[26,5205,5208],{"className":5206,"code":5207,"language":3168,"meta":31},[3166],"浏览器\n  ↓ 本地缓存 1 天\nEdgeOne\n  ↓ 节点缓存 30 天\nAList\n  ↓\nNAS\n",[21,5209,5207],{"__ignoreMap":31},[14,5211,5212],{},"绝大多数重复访问会停在浏览器或 EdgeOne，不会真正回源到家里的 服务器 和 NAS。",[10,5214,5216],{"id":5215},"minio-自建对象存储","MinIO 自建对象存储",[397,5218,3190],{"id":5219},"简介-2",[1368,5221,5222,5235],{},[1371,5223,5224],{},[1374,5225,5226,5229,5232],{},[1377,5227,5228],{},"项目",[1377,5230,5231],{},"腾讯 COS",[1377,5233,5234],{},"自建 MinIO",[1388,5236,5237,5247,5256,5265,5274,5283,5292,5301,5314,5326,5339,5350,5363,5374,5385,5399],{},[1374,5238,5239,5242,5245],{},[1393,5240,5241],{},"对象存储",[1393,5243,5244],{},"✅",[1393,5246,5244],{},[1374,5248,5249,5252,5254],{},[1393,5250,5251],{},"S3 API",[1393,5253,5244],{},[1393,5255,5244],{},[1374,5257,5258,5261,5263],{},[1393,5259,5260],{},"图片\u002F附件",[1393,5262,5244],{},[1393,5264,5244],{},[1374,5266,5267,5270,5272],{},[1393,5268,5269],{},"Bucket",[1393,5271,5244],{},[1393,5273,5244],{},[1374,5275,5276,5279,5281],{},[1393,5277,5278],{},"SDK 上传",[1393,5280,5244],{},[1393,5282,5244],{},[1374,5284,5285,5288,5290],{},[1393,5286,5287],{},"私有对象\u002F签名 URL",[1393,5289,5244],{},[1393,5291,5244],{},[1374,5293,5294,5297,5299],{},[1393,5295,5296],{},"Versioning",[1393,5298,5244],{},[1393,5300,5244],{},[1374,5302,5303,5306,5309],{},[1393,5304,5305],{},"存储空间",[1393,5307,5308],{},"腾讯提供",[1393,5310,5311],{},[403,5312,5313],{},"吃你服务器硬盘",[1374,5315,5316,5319,5321],{},[1393,5317,5318],{},"带宽",[1393,5320,5308],{},[1393,5322,5323],{},[403,5324,5325],{},"吃学校服务器出口带宽",[1374,5327,5328,5331,5334],{},[1393,5329,5330],{},"高可用",[1393,5332,5333],{},"腾讯负责",[1393,5335,5336],{},[403,5337,5338],{},"你负责",[1374,5340,5341,5344,5346],{},[1393,5342,5343],{},"数据冗余",[1393,5345,5333],{},[1393,5347,5348],{},[403,5349,5338],{},[1374,5351,5352,5355,5358],{},[1393,5353,5354],{},"硬盘损坏",[1393,5356,5357],{},"云厂商处理",[1393,5359,5360],{},[403,5361,5362],{},"可能直接丢数据",[1374,5364,5365,5368,5371],{},[1393,5366,5367],{},"运维",[1393,5369,5370],{},"几乎没有",[1393,5372,5373],{},"Docker、磁盘、备份、升级、安全都自己搞",[1374,5375,5376,5379,5382],{},[1393,5377,5378],{},"费用",[1393,5380,5381],{},"存储+流量",[1393,5383,5384],{},"软件可以自建，但硬盘\u002F服务器\u002F带宽自己承担",[1374,5386,5387,5390,5393],{},[1393,5388,5389],{},"CDN",[1393,5391,5392],{},"很容易接腾讯 CDN\u002FEO",[1393,5394,5395,5396],{},"MinIO 本身",[403,5397,5398],{},"不是 CDN",[1374,5400,5401,5404,5407],{},[1393,5402,5403],{},"可控性",[1393,5405,5406],{},"一般",[1393,5408,5409],{},[403,5410,5411],{},"非常高",[397,5413,768],{"id":5414},"安装-2",[14,5416,5417,5418,2805],{},"首先你需要服务器上安装一个",[21,5419,5420],{},"1panel",[14,5422,5423],{},"进入商店,搜索minio.",[14,5425,5426],{},[432,5427],{"alt":31,"src":5428},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787145834399-2d3916b0.webp",[14,5430,5431],{},"点击安装.",[14,5433,5434],{},"大多数设置都默认即可,但账号密码要自己填写,这个端口外部访问这里,如果你的服务器在内网,可以选择打开,如果你的服务器的IP是一个公网IP,那么不建议你打开.",[14,5436,5437],{},[432,5438],{"alt":31,"src":5439},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787145965960-68b6e978.webp",[1368,5441,5442,5452],{},[1371,5443,5444],{},[1374,5445,5446,5449],{},[1377,5447,5448],{},"配置项",[1377,5450,5451],{},"建议",[1388,5453,5454,5464,5472,5480,5488,5498,5508,5520,5528,5536],{},[1374,5455,5456,5459],{},[1393,5457,5458],{},"名称",[1393,5460,5461],{},[21,5462,5463],{},"minio",[1374,5465,5466,5469],{},[1393,5467,5468],{},"版本",[1393,5470,5471],{},"选 1Panel 当前提供的稳定版本",[1374,5473,5474,5477],{},[1393,5475,5476],{},"用户",[1393,5478,5479],{},"自己设一个，不要用太简单的",[1374,5481,5482,5485],{},[1393,5483,5484],{},"密码",[1393,5486,5487],{},"自己设一个密码复杂点的",[1374,5489,5490,5493],{},[1393,5491,5492],{},"WebUI 端口",[1393,5494,5495],{},[21,5496,5497],{},"9001",[1374,5499,5500,5503],{},[1393,5501,5502],{},"S3 API 端口",[1393,5504,5505],{},[21,5506,5507],{},"9000",[1374,5509,5510,5513],{},[1393,5511,5512],{},"会话持续时间",[1393,5514,5515,5516,5519],{},"默认 ",[21,5517,5518],{},"12h"," 即可",[1374,5521,5522,5525],{},[1393,5523,5524],{},"启用 WebUI",[1393,5526,5527],{},"开",[1374,5529,5530,5533],{},[1393,5531,5532],{},"WebUI 动画",[1393,5534,5535],{},"随意",[1374,5537,5538,5541],{},[1393,5539,5540],{},"端口外部访问",[1393,5542,5543],{},[403,5544,5545],{},"建议不开公网暴露,但如果测试的话,先开公网暴露也可以.",[14,5547,5548],{},"最后点击安装.",[14,5550,5551],{},[432,5552],{"alt":31,"src":5553},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787146064891-460b603b.webp",[397,5555,5557],{"id":5556},"配置minio","配置MinIO",[2565,5559,5561],{"id":5560},"登陆minio","登陆MinIO",[14,5563,5564,5565,5568],{},"在浏览器输入",[21,5566,5567],{},"服务器ip:9001",":",[14,5570,5571,5572],{},"比如我这个内网",[21,5573,5574],{},"10.0.0.4:9001",[14,5576,5577],{},[432,5578],{"alt":31,"src":5579},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787147091527-f99d5032.webp",[14,5581,5582],{},"然后登陆账号密码.",[2565,5584,5585],{"id":5585},"测试桶",[14,5587,5588,5589],{},"创建一个桶,比如我这里叫",[21,5590,4969],{},[14,5592,5593],{},[432,5594],{"alt":31,"src":5595},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787147218585-a9d82f0b.webp",[14,5597,5598],{},"再随便上传一张图片试试.",[14,5600,5601],{},[432,5602],{"alt":31,"src":5603},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787147308943-431e0c9c.webp",[14,5605,5606],{},[432,5607],{"alt":31,"src":5608},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787147318544-4cd5e37f.webp",[14,5610,5611],{},[432,5612],{"alt":31,"src":5613},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787147349844-1421edc4.webp",[2565,5615,5617],{"id":5616},"测试s3协议","测试S3协议",[14,5619,5620,5621,5568],{},"S3协议的网址应该是",[21,5622,5623],{},"服务器ip:9000",[14,5625,5571,5626],{},[21,5627,5628],{},"10.0.0.4:9000",[14,5630,5631],{},"在你电脑上测试 S3 API 健康状态：",[26,5633,5635],{"className":580,"code":5634,"language":582,"meta":31,"style":31},"curl -i http:\u002F\u002F10.0.0.4:9000\u002Fminio\u002Fhealth\u002Flive\n",[21,5636,5637],{"__ignoreMap":31},[35,5638,5639,5641,5643],{"class":37,"line":38},[35,5640,4751],{"class":589},[35,5642,4754],{"class":58},[35,5644,5645],{"class":89}," http:\u002F\u002F10.0.0.4:9000\u002Fminio\u002Fhealth\u002Flive\n",[14,5647,4760,5648,4764],{},[21,5649,4763],{},[14,5651,5652],{},[432,5653],{"alt":31,"src":5654},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787147506873-538da12a.webp",[14,5656,5657],{},"同样，测试下面这个是否S3就绪：",[26,5659,5661],{"className":580,"code":5660,"language":582,"meta":31,"style":31},"curl -i http:\u002F\u002F10.0.0.4:9000\u002Fminio\u002Fhealth\u002Fready\n",[21,5662,5663],{"__ignoreMap":31},[35,5664,5665,5667,5669],{"class":37,"line":38},[35,5666,4751],{"class":589},[35,5668,4754],{"class":58},[35,5670,5671],{"class":89}," http:\u002F\u002F10.0.0.4:9000\u002Fminio\u002Fhealth\u002Fready\n",[14,5673,4760,5674,4764],{},[21,5675,4763],{},[14,5677,5678],{},[432,5679],{"alt":31,"src":5680},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787147577638-0f060165.webp",[2565,5682,5684],{"id":5683},"接入alist测试","接入AList测试",[14,5686,5687],{},[432,5688],{"alt":31,"src":5689},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787148971335-5ead1508.webp",[14,5691,5692],{},[432,5693],{"alt":31,"src":5694},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787149002738-17bac9d7.webp",[14,5696,5697],{},"这个一定要开着。",[14,5699,5700],{},[432,5701],{"alt":31,"src":5702},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787149013096-2f2eba16.webp",[14,5704,5705],{},"配置完后，可以返回文件列表，发现刚才的文件可以被正常查看了。",[14,5707,5708],{},[432,5709],{"alt":31,"src":5710},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2024\u002F03\u002F30\u002F1787149035102-0dba3465.webp",[5712,5713,5714],"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":5716},[5717,5718,5719,5720,5721,5722,5723,5724,5725,5726,5727],{"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":3186,"depth":65,"text":3187},{"id":4629,"depth":65,"text":4630},{"id":5215,"depth":65,"text":5216},"\u002Fzh-cn\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-cn:2024-03-30-linux-jiao-cheng","\u002Fzh-cn\u002Fwiki\u002F2024-03-30-linux-jiao-cheng","Linux教程","md","wiki\u002F2024-03-30-Linux教程\u002F0900-其他操作",false,null,"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo","zh-CN","zh-cn",{},{"title":5,"description":31},"dz1PYe9Yl4KfdyLVPV3J8XMYfcHUT7FVWeZNcK4D0Ws",[5747,5752,5757,5762,5767,5772,5777,5782,5787,5788],{"path":5748,"stem":5749,"title":5750,"date":5731,"chapterOrder":5751,"chapterDepth":5729,"docKey":5733,"docRoot":5734,"docTitle":5735,"isWikiDoc":1151,"isWikiIndex":5738},"\u002Fzh-cn\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0100-fa-xing-ban-tui-jian","wiki\u002F2024-03-30-Linux教程\u002F0100-发行版推荐","发行版推荐","0100",{"path":5753,"stem":5754,"title":5755,"date":5731,"chapterOrder":5756,"chapterDepth":5729,"docKey":5733,"docRoot":5734,"docTitle":5735,"isWikiDoc":1151,"isWikiIndex":5738},"\u002Fzh-cn\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0200-linux-zhuang-ji-jiao-cheng","wiki\u002F2024-03-30-Linux教程\u002F0200-Linux装机教程","Linux装机教程","0200",{"path":5758,"stem":5759,"title":5760,"date":5731,"chapterOrder":5761,"chapterDepth":5729,"docKey":5733,"docRoot":5734,"docTitle":5735,"isWikiDoc":1151,"isWikiIndex":5738},"\u002Fzh-cn\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0300-an-zhuang-bi-bei-pei-zhi","wiki\u002F2024-03-30-Linux教程\u002F0300-安装必备配置","安装必备配置","0300",{"path":5763,"stem":5764,"title":5765,"date":5731,"chapterOrder":5766,"chapterDepth":5729,"docKey":5733,"docRoot":5734,"docTitle":5735,"isWikiDoc":1151,"isWikiIndex":5738},"\u002Fzh-cn\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0400-ming-ling-jiao-cheng-chang-qi-ji-lei","wiki\u002F2024-03-30-Linux教程\u002F0400-命令教程(长期积累)","命令教程(长期积累)","0400",{"path":5768,"stem":5769,"title":5770,"date":5731,"chapterOrder":5771,"chapterDepth":5729,"docKey":5733,"docRoot":5734,"docTitle":5735,"isWikiDoc":1151,"isWikiIndex":5738},"\u002Fzh-cn\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0500-ge-zhong-huan-jing-pei-zhi","wiki\u002F2024-03-30-Linux教程\u002F0500-各种环境配置","各种环境配置","0500",{"path":5773,"stem":5774,"title":5775,"date":5731,"chapterOrder":5776,"chapterDepth":5729,"docKey":5733,"docRoot":5734,"docTitle":5735,"isWikiDoc":1151,"isWikiIndex":5738},"\u002Fzh-cn\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0600-qi-ta-ke-xuan-pei-zhi","wiki\u002F2024-03-30-Linux教程\u002F0600-其他可选配置","其他可选配置","0600",{"path":5778,"stem":5779,"title":5780,"date":5731,"chapterOrder":5781,"chapterDepth":5729,"docKey":5733,"docRoot":5734,"docTitle":5735,"isWikiDoc":1151,"isWikiIndex":5738},"\u002Fzh-cn\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0700-qemu-kvm-xu-ni-ji","wiki\u002F2024-03-30-Linux教程\u002F0700-QEMU-KVM虚拟机","QEMU-KVM虚拟机","0700",{"path":5783,"stem":5784,"title":5785,"date":5731,"chapterOrder":5786,"chapterDepth":5729,"docKey":5733,"docRoot":5734,"docTitle":5735,"isWikiDoc":1151,"isWikiIndex":5738},"\u002Fzh-cn\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0800-tuo-zhan-gong-neng","wiki\u002F2024-03-30-Linux教程\u002F0800-拓展功能","拓展功能","0800",{"path":5728,"stem":5737,"title":5,"date":5731,"chapterOrder":5730,"chapterDepth":5729,"docKey":5733,"docRoot":5734,"docTitle":5735,"isWikiDoc":1151,"isWikiIndex":5738},{"path":5734,"stem":5789,"title":5735,"date":5731,"chapterOrder":5739,"chapterDepth":5729,"docKey":5733,"docRoot":5734,"docTitle":5735,"isWikiDoc":1151,"isWikiIndex":1151},"wiki\u002F2024-03-30-Linux教程\u002Findex",{"variants":5791},[5792,5795,5798,5801,5804],{"path":5793,"localeSlug":5794,"i18nKey":5737},"\u002Fen-us\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo","en-us",{"path":5796,"localeSlug":5797,"i18nKey":5737},"\u002Fzh-hant\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo","zh-hant",{"path":5799,"localeSlug":5800,"i18nKey":5737},"\u002Fzh-hk\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo","zh-hk",{"path":5802,"localeSlug":5803,"i18nKey":5737},"\u002Fzh-tw\u002Fwiki\u002F2024-03-30-linux-jiao-cheng\u002F0900-qi-ta-cao-zuo","zh-tw",{"path":5728,"localeSlug":5742,"i18nKey":5737},[5793,5740,5796,5740,5799,5740,5802,5740,5728,5740],1788531380543]