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