ubuntu-20.04 VNC xfce4

如何在 Ubuntu 20.04 上安装和配置 VNC
Ubuntu各种各样的应用Ubuntu 20.04
确定

作者:finid和 马克·德雷克

最后验证于2021 年 9 月 30 日 最初于2020 年 5 月 8 日发布 280.5k意见
不使用 Ubuntu 20.04?
选择不同的版本或发行版。
介绍
虚拟网络计算(VNC) 是一种连接系统,允许您使用键盘和鼠标与远程服务器上的图形桌面环境进行交互。对于尚不熟悉命令行的用户,它可以更轻松地管理远程服务器上的文件、软件和设置。

在本指南中,您将在 Ubuntu 20.04 服务器上使用TightVNC设置 VNC 服务器,并通过 SSH 隧道安全地连接到它。然后,您将使用本地计算机上的 VNC 客户端程序通过图形桌面环境与您的服务器交互。

先决条件
要完成本教程,您需要:

一台 Ubuntu 20.04 服务器,具有非 root 管理用户和配置了 UFW 的防火墙。要进行设置,请遵循我们的 Ubuntu 20.04 初始服务器设置指南。
安装了 VNC 客户端的本地计算机。您使用的 VNC 客户端必须支持通过 SSH 隧道的连接:
在 Windows 上,您可以使用TightVNC、RealVNC或UltraVNC。
在 macOS 上,您可以使用内置的屏幕共享程序,也可以使用RealVNC等跨平台应用程序。
在 Linux 上,您可以从许多选项中进行选择,包括vinagre、krdc、RealVNC或TightVNC。
第 1 步 — 安装桌面环境和 VNC 服务器
默认情况下,Ubuntu 20.04 服务器没有安装图形桌面环境或 VNC 服务器,因此您将从安装它们开始。

在选择哪种 VNC 服务器和桌面环境时,您有很多选择。在本教程中,您将为最新的Xfce桌面环境安装软件包,以及可从官方 Ubuntu 存储库获得的 TightVNC 软件包。Xfce 和 TightVNC 都以轻量和快速而闻名,这将有助于确保 VNC 连接即使在较慢的互联网连接上也能流畅稳定。

使用 SSH 连接到您的服务器后,更新您的软件包列表:

sudo apt update

现在随xfce4-goodies包一起安装 Xfce,其中包含桌面环境的一些增强功能:

sudo apt install xfce4 xfce4-goodies

在安装过程中,可能会提示您为 Xfce 选择默认显示管理器。显示管理器是一个程序,它允许您通过图形界面选择并登录到桌面环境。只有在连接 VNC 客户端时,您才会使用 Xfce,并且在这些 Xfce 会话中,您已经以非 root Ubuntu 用户身份登录。因此,出于本教程的目的,您选择的显示管理器并不相关。选择其中一个并按ENTER。

安装完成后,安装 TightVNC 服务器:

sudo apt install tightvncserver

接下来,运行vncserver命令设置 VNC 访问密码,创建初始配置文件,并启动 VNC 服务器实例:

vncserver

系统将提示您输入并验证密码以远程访问您的计算机:

Output
You will require a password to access your desktops.

Password:
Verify:
密码长度必须介于六到八个字符之间。超过 8 个字符的密码将被自动截断。

验证密码后,您可以选择创建仅供查看的密码。使用仅查看密码登录的用户将无法使用鼠标或键盘控制 VNC 实例。如果您想向使用您的 VNC 服务器的其他人演示某些内容,这是一个有用的选项,但这不是必需的。

然后该过程为服务器创建必要的默认配置文件和连接信息。此外,它会在 port 上启动一个默认服务器实例5901。此端口称为显示端口,VNC 将其称为:1. VNC 可以在其他显示端口上启动多个实例,:2引用端口5902,:3引用5903,等等:

Output
Would you like to enter a view-only password (y/n)? n
xauth: file /home/sammy/.Xauthority does not exist

New ‘X’ desktop is your_hostname:1

Creating default startup script /home/sammy/.vnc/xstartup
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log
请注意,如果您想更改密码或添加仅供查看的密码,可以使用以下vncpasswd命令:

vncpasswd

至此,VNC 服务器已安装并运行。现在让我们配置它来启动 Xfce 并让我们通过图形界面访问服务器。

第 2 步 — 配置 VNC 服务器
VNC 服务器在启动时需要知道要执行哪些命令。具体来说,VNC 需要知道它应该连接到哪个图形桌面环境。

VNC 服务器在启动时运行的命令位于一个配置文件xstartup中,该.vnc文件位于您的主目录下的文件夹中。启动脚本是在vncserver上一步中运行命令时创建的,但您将创建自己的脚本来启动 Xfce 桌面。

因为您将要更改 VNC 服务器的配置方式,所以首先5901使用以下命令停止在端口上运行的 VNC 服务器实例:

vncserver -kill :1

输出将如下所示,尽管您会看到不同的 PID:

Output
Killing Xtightvnc process ID 17648
在修改xstartup文件之前,请备份原始文件:

mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

现在创建一个新xstartup文件并在文本编辑器中打开它,例如nano:

nano ~/.vnc/xstartup

然后将以下行添加到文件中:

~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

第一行是shebang。在 *nix 平台上的可执行纯文本文件中,shebang 告诉系统将该文件传递给哪个解释器执行。在这种情况下,您将文件传递给 Bash 解释器。这将允许每个连续的行按顺序作为命令执行。

文件中的第一个命令xrdb $HOME/.Xresources,告诉 VNC 的 GUI 框架读取服务器用户的.Xresources文件。.Xresources用户可以在其中更改图形桌面的某些设置,例如终端颜色、光标主题和字体渲染。第二个命令告诉服务器启动 Xfce。每当您启动或重新启动 VNC 服务器时,这些命令都会自动执行。

添加这些行后保存并关闭文件。如果您使用过nano,请按CTRL + X, Y, 然后ENTER。

为确保 VNC 服务器能够正确使用这个新的启动文件,您需要使其可执行:

chmod +x ~/.vnc/xstartup

然后重启VNC服务器:

vncserver -localhost

请注意,这次命令包含-localhost选项,它将 VNC 服务器绑定到服务器的环回接口。这将导致 VNC 仅允许来自安装它的服务器的连接。

在下一步中,您将在本地计算机和服务器之间建立一个 SSH 隧道,实际上是在诱使 VNC 认为来自本地计算机的连接源自您的服务器。此策略将围绕 VNC 添加额外的安全层,因为唯一能够访问它的用户是那些已经对您的服务器具有 SSH 访问权限的用户。

您将看到与此类似的输出:

Output
New ‘X’ desktop is your_hostname:1

Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log
配置到位后,您就可以从本地计算机连接到 VNC 服务器了。

第 3 步 — 安全连接到 VNC 桌面
VNC 本身在连接时不使用安全协议。为了安全地连接到您的服务器,您将建立一个 SSH 隧道,然后告诉您的 VNC 客户端使用该隧道进行连接,而不是进行直接连接。

在您的本地计算机上创建一个安全转发到localhostVNC 连接的 SSH 连接。您可以通过 Linux 或 macOS 上的终端使用以下ssh命令执行此操作:

ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip

以下是此ssh命令选项的含义:

-L 59000:localhost:5901:该-L开关指定本地计算机上的给定端口(59000)将被转发到目标服务器上的给定主机和端口(localhost:5901,表示目标服务器5901上的端口,定义为your_server_ip)。请注意,您指定的本地端口有些随意;只要端口尚未绑定到其他服务,您就可以将其用作隧道的转发端口。
-C:此标志启用压缩,有助于最大程度地减少资源消耗并加快速度。
-N:此选项告诉ssh您不想执行任何远程命令。当您只想转发端口时,此设置很有用。
-l sammy your_server_ip:该-l开关让您在连接到服务器后指定要登录的用户。确保将sammy和替换your_server_ip为非 root 用户的名称和服务器的 IP 地址。
注意:此命令建立一个 SSH 隧道,通过每台机器上的端口(SSH 的默认端口)将信息从5901VNC 服务器上的端口转发到59000本地机器上的端口。22假设您遵循Ubuntu 20.04 的必备初始服务器设置指南,您将添加一条 UFW 规则以允许通过 OpenSSH 连接到您的服务器。

这比简单地打开服务器的防火墙以允许连接到 port 更安全5901,因为这将允许任何人通过 VNC 访问您的服务器。通过通过 SSH 隧道连接,您将 VNC 访问限制为对已经具有 SSH 访问服务器的计算机的访问权限。

如果您使用 PuTTY 连接到您的服务器,您可以通过右键单击终端窗口的顶部栏,然后单击更改设置…选项来创建 SSH 隧道:

右键单击顶部栏以显示更改设置选项

在 PuTTY Reconfiguration 窗口左侧的树形菜单中找到Connection分支。展开SSH分支并单击Tunnels。在Options 控制 SSH 端口转发屏幕上,输入Source Port和Destination59000 ,如下所示:localhost:5901

示例 PuTTY SSH 隧道配置

然后单击添加按钮,然后单击应用按钮来实现隧道。

隧道运行后,使用 VNC 客户端连接到localhost:59000. 系统将提示您使用您在步骤 1 中设置的密码进行身份验证。

连接后,您将看到默认的 Xfce 桌面。它应该看起来像这样:

VNC 连接到带有 Xfce 桌面环境的 Ubuntu 20.04 服务器

您可以使用文件管理器或从命令行访问主目录中的文件,如下所示:

通过 VNC 连接到 Ubuntu 20.04 的文件管理器

在您的本地终端中按下CTRL+C以停止 SSH 隧道并返回到您的提示。这也会断开您的 VNC 会话。

现在您可以将 VNC 服务器配置为作为 systemd 服务运行。

第 4 步 — 将 VNC 作为系统服务运行
通过将 VNC 服务器设置为作为 systemd 服务运行,您可以根据需要启动、停止和重新启动它,就像任何其他服务一样。您还可以使用 systemd 的管理命令来确保 VNC 在您的服务器启动时启动。

首先,创建一个名为的新单元文件/etc/systemd/system/vncserver@.service:

sudo nano /etc/systemd/system/vncserver@.service

@名称末尾的符号将让我们传入一个您可以在服务配置中使用的参数。您将使用它来指定在管理服务时要使用的 VNC 显示端口。

将以下行添加到文件中。请务必更改User、Group、WorkingDirectory的值和PIDFILE值中的用户名以匹配您的用户名:

/etc/systemd/system/vncserver@.service
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=sammy
Group=sammy
WorkingDirectory=/home/sammy

PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

ExecStartPre如果 VNC 已经在运行,该命令将停止它。该ExecStart命令启动 VNC 并将颜色深度设置为 24 位颜色,分辨率为 1280x800。您也可以修改这些启动选项以满足您的需要。另外,请注意该ExecStart命令再次包含该-localhost选项。

保存并关闭文件。

接下来,让系统知道新的单元文件:

sudo systemctl daemon-reload

启用单元文件:

sudo systemctl enable vncserver@1.service

1后面的符号@表示服务应该出现在哪个显示编号上,在这种情况下,默认值:1是在步骤 2 中讨论的。

如果 VNC 服务器仍在运行,请停止当前实例:

vncserver -kill :1

然后像启动任何其他 systemd 服务一样启动它:

sudo systemctl start vncserver@1

您可以使用以下命令验证它是否启动:

sudo systemctl status vncserver@1

如果它正确启动,输出应如下所示:

Output
● vncserver@1.service - Start TightVNC server at startup
Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-05-07 17:23:50 UTC; 6s ago
Process: 39768 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)
Process: 39772 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
Main PID: 39795 (Xtightvnc)

您的 VNC 服务器现在可以在服务器启动时使用,您可以像任何其他 systemd 服务一样使用systemctl命令对其进行管理。

但是,客户端不会有任何区别。要重新连接,请再次启动 SSH 隧道:

ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip

然后使用您的 VNC 客户端软件建立新的连接localhost:59000以连接到您的服务器。

结论
您现在已经在 Ubuntu 20.04 服务器上启动并运行了一个安全的 VNC 服务器。现在,您将能够通过用户友好的图形界面管理文件、软件和设置,并且能够远程运行 Web 浏览器等图形软件。

这个有帮助吗?
是的

24报告问题
关于作者
确定
确定
万事通,少数能手

马克·德雷克
技术作家@DigitalOcean

还在寻找答案吗?
问一个问题
搜索更多帮助
评论
24 条评论
发表评论…
登录评论

3
timothy_holt123 2020 年 5 月 11 日
我注意到没有窗户装饰(边框)。这是 xfwm4 的一个已知错误,已在https://bugs.launchpad.net/ubuntu/+source/xfwm4/+bug/1860921报告

此错误已在版本 4.14.2 中修复,可在https://launchpad.net/ubuntu/+source/xfwm4找到

回复 报告

0
2020 年 6 月 14 日
如果您vncserver通过桌面 X 会话运行,由于继承环境,您将遇到问题。解决方案是vncserver通过 SSH 会话运行和/或在调用之前将以下内容添加到 ~/.vnc/xsessionstartxfce4

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
这会重置环境,使 xfce4 不认为当前正在运行窗口管理器。

回复 报告

2
杜兰尼克 2020 年 6 月 24 日
我收到以下信息:
不再支持 SSH 协议 v.1

回复 报告

0
伊斯特科林 2020 年 9 月 11 日
XFCE 文件管理器窗口的屏幕截图没有最大/最小/关闭按钮。我也有这个问题。但是,我在 VPS 上运行我的 Ubuntu 20.04 服务器,控制台显示该按钮。我在想 20.04 存在一个紧密的 VNC 服务器问题。

回复 报告

0
缬草 2020 年 11 月 13 日
在 Vinagre VNC 客户端中,我收到连接关闭错误。

回复 报告

1
缬草 2020 年 11 月 13 日
你是什​​么意思“组=萨米”?我可以跳过吗?

回复 报告

0
2020 年 12 月 17 日
我得到的只是请在尝试启动服务时在 vncserver 脚本中设置正确的 fontPath。从安装 xfonts-base 到安装具有不同 dpi 的 xfonts 到检查主机名到其他任何人建议的工作,没有任何建议。没有任何效果。为什么这根本不起作用?

回复 报告

0
2020 年 12 月 17 日
最终的答案是将以下内容添加到 ExecStart 位于 vncserver 之后的vncserver@.service文件中

-rfbport 5901 -fp /usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Type1/,/usr/share/fonts/X11/75dpi/,/usr/share/fonts/X11/ 100dpi/ -co /etc/X11/rgb -depth 24 -geometry 1920x1080 -localhost

现在,当我通过 SSH 隧道连接时,出现带有 X 的灰色屏幕,不知道为什么。那里有很多问题和很少的有效答案。

回复 报告

0
radiant4ever 2021 年 2 月 18 日
完美运行!… 除了我们有一个主要的应用程序问题,我们的 Tomcat 服务器应用程序不会以 sudo 或 root 身份启动而不会给我们这个错误:

“客户端无权连接到服务器无法打开显示:无法使用 ‘:1.0’ 作为 DISPLAY 变量的值连接到 X11 窗口服务器。”

我们需要此应用程序以 root 身份运行,以便我们可以使用端口 443。

感谢您提供任何帮助、建议或想法!

回复 报告

0
红十字会骑士 2021 年 3 月 20 日
该服务每隔几分钟就会崩溃,并显示以下消息:
mbrown@ubuntu:~$ sudo systemctl start vncserver@1 vncserver@1.service
的 作业失败,因为超过了超时。 有关详细信息,请参阅“systemctl status vncserver@1.service ”和“journalctl -xe”。 mbrown@ubuntu:~$ sudo systemctl start vncserver@1 vncserver@1.service的 作业失败,因为超过了超时。 有关详细信息,请参阅“systemctl status vncserver@1.service ”和“journalctl -xe”。

有任何想法吗?

回复 报告

0
红十字会骑士 2021 年 3 月 20 日
该服务每隔几分钟就会崩溃,并显示以下消息:
mbrown@ubuntu:~$ sudo systemctl start vncserver@1
Job for vncserver@1.service由于超时而失败。
有关详细信息,请参阅“systemctl status vncserver@1.service ”和“journalctl -xe”。
mbrown@ubuntu:~$ sudo systemctl start vncserver@1 vncserver@1.service
的 作业失败,因为超过了超时。 有关详细信息,请参阅“systemctl status vncserver@1.service ”和“journalctl -xe”。

有任何想法吗?

回复 报告

0
克里斯托弗斯汀森 2021 年 4 月 8 日
当我运行此命令时(使用我的用户和 ip):

ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip
输入密码后,我的 ssh 隧道挂起。我使用详细的最后一条调试消息是:

debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
谁能帮我解决这个问题?我不知道该怎么做。

回复 报告

0
德雷克 2021 年 5 月 6 日
你好@christophersteenson9,

您引用的 SSH 隧道命令确实应该挂起,直到您通过CTRL + C在运行它的终端窗口中按下它来关闭它。您共享的调试消息是正常运行的 SSH 隧道所期望的。

如果您想让 SSH 隧道在后台运行(这意味着命令在执行后不会挂起),您可以将-f选项附加到书面命令,如下所示:

ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip -f

但是,要关闭使用该-f选项启动的隧道,您需要使用如下命令找到 SSH 隧道进程的 PID:

ps -C ssh

然后,您需要通过将 PID 作为参数传递给killorpkill命令来终止隧道进程:

pkill SSH_PID_from_previous_command

回复 报告

0
uarreghini 2021 年 4 月 15 日
真的很烦人:使用 TightVNC 的 ubuntu 20 上的每个窗口中都缺少最小化、最大化和关闭按钮。我是唯一一个有这个问题的人吗?有人已经解决了吗?

回复 报告

0
Technophant 2021 年 4 月 27 日
我有很多问题和其他很多问题,所以(12 多个小时后)我找到了一个不同的教程并安装了tigervnc,并且不再有这个问题了。它还具有“vncserver -list”命令,可用于查找正在运行的显示器。

回复 报告

0
巴尔多达维 2021 年 7 月 8 日
更新到 20.04 包含 ssh 隧道命令中的错误:
ssh -L 59000:localhost:5901 -C -N -l sammy your server ip should be
ssh -L 5901:localhost:5901 -C -N -l sammy your server ip

回复 报告

0
ianengelbrecht 2021 年 7 月 16 日
现在我们只需要 gnome 的详细信息,以及所有其他的 gui…

回复 报告

0
卢卡斯迈尔 2021 年 7 月 29 日
注意:
使用tightvnc CLIENT时,例如尝试连接服务器时

确保以这种方式连接(在 ubuntu 18.04 上)

$ vncviewer localhost::59000

是的,2 个双点

否则你会得到

$ vncviewer localhost:59000
localhost 64900
java.net.ConnectException: Connection refused (Connection refused)
at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:400)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:243)
at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:225)
at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:402)
at java.base/java.net.Socket.connect(Socket.java:591)
at java.base/java.net.Socket.connect(Socket.java:540)
at java.base/java.net.Socket.(Socket.java:436)
at java.base/java.net.Socket.(Socket.java:213)
at RfbProto.(RfbProto.java:130)
at VncViewer.tryAuthenticate(VncViewer.java:347)
at VncViewer.connectAndAuthenticate(VncViewer.java:330)
at VncViewer.run(VncViewer.java:154)
at java.base/java.lang.Thread.run(Thread.java:844)
Network error: could not connect to server: localhost:64900

回复 报告

1
drchristianhupfer 2021 年 8 月 3 日
在浪费了几个小时(老实说:浪费了几天!)与网络上的其他教程之后,这是第一个基本上开箱即用的教程。

我更改为tigervnc-standalone-server,与教程中描述的方法略有不同。

(我有一些其他的窗口会话/桌面)(例如 gnome-session)并将其保留在服务中总是失败 - 我现在已经切换到 xfce4 并且它可以工作!我可以通过在没有服务的情况下启动来访问 gnome 桌面,即 vncserver -localhost——但我并不坚持使用 gnome-desktop 来获取一台基本上应该作为服务器运行的机器。

然而,我的基本 VNC 客户端是 Remmina,使用 SSH 隧道来确保安全。

太感谢了

回复 报告

0
马克克莱特 2021 年 9 月 29 日
在我的客户端设备上输入此命令后,我的会话挂起: ssh -L 59000:localhost:5901 -C -N -l username serverIPaddress (我输入服务器的用户名及其 IP 地址)

我该怎么办?

回复 报告

0
杰里米克雷斯 2021 年 12 月 6 日
我有同样的问题。你设法弄清楚了吗?

回复 报告

0
亚历山大 2021 年 10 月 21 日
大家好,

我相信/etc/systemd/system/vncserver@.service文件的模板上有错字。

在%i:vncserver 调用中放错了,根据tightVNC文档应该是这样的:

[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=sammy
Group=sammy
WorkingDirectory=/home/sammy

PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver :%i -depth 24 -geometry 1280x800 -localhost
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target
通过这个修改,我设法让它在 Ubuntu 服务器 20.04 上运行。

回复 报告

1
言玉 2021 年 11 月 15 日
本教程在 20.04 上对我很有效。我按照步骤 4 中的说明将其作为服务运行。使用带有 RealVNC 客户端的古老 iPad,我可以连接并启动 Xfce 环境。我确实收到了一些有关崩溃的错误消息,例如 wrapper-2.0。但除此之外,我仍然可以使用远程环境,它基本上可以正常工作。非常感谢!

回复 报告

1
douwe71 2021 年 12 月 19 日
对于那些有字体问题和灰屏的人:

sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils xrdp xfonts-base autocutsel xfonts-75dpi xfonts-100dpi
这解决了有关缺少字体目录和 xrdb 的投诉。
你还需要做:

touch ~/.Xresources
修复 xrdb 投诉

在 startxfce4 之前添加 autocutsel -fork 以获得更好的复制/粘贴体验(虽然也不完美)

这应该是您的 ~/.vnc/xstartup 文件:

!/bin/sh
xrdb $HOME/
.Xresources xsetroot -solid gray
export XKL XMODMAP DISABLE=1
autocutsel -fork
startxfce4

使用https://wiki.parabola.nu/X11vnc连接到您的 root :0 显示器

回复 报告

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值