![如何设置 Ubuntu 服务器以便(安全地)通过互联网访问?](https://linux22.com/image/1035450/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%20Ubuntu%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%BB%A5%E4%BE%BF%EF%BC%88%E5%AE%89%E5%85%A8%E5%9C%B0%EF%BC%89%E9%80%9A%E8%BF%87%E4%BA%92%E8%81%94%E7%BD%91%E8%AE%BF%E9%97%AE%EF%BC%9F.png)
我想构建一个可以持续连接到互联网的 Ubuntu 服务器。我只有一个 IP 地址。该服务器的主要用途是作为源代码控制器(可能是 git 或 svn... 尚未选择),但偶尔也用于其他用途(与家人或客户共享文件、个人备份、托管我可能编写的 Web 应用程序等)。我还希望能够随时访问计算机进行管理,即使在某些仅允许 http 或 https 的客户代理之后
实现该目标的标准步骤是什么?
- 我的第一个想法是设置 openssh 服务器。是否可以(并且非常安全)在标准端口(即客户防火墙/代理兼容)上将其打开到互联网?
- 是否可以设置一个从网页插件(也由服务器托管)运行的 VPN 服务器?
- 因为我只有一个 IP 地址(实际上是 IP V4 和 IPV 6,但我认为现在客户网络还无法访问 IP V6 地址),我可以让 apache 和其他服务器软件在相同的标准端口上共存吗?
提前致谢 ;)
答案1
如果设置正确,OpenSSH 即使在标准端口上也是安全的。将其移出标准端口可防止您的日志文件被未经授权的登录尝试填满。更多详细信息请参见末尾。
如果您无法控制连接到服务器的计算机,那么访问您的服务器是非常危险的(我认为这就是您需要使用浏览器插件的原因)
OpenVPN 可以设置为与 HTTP/HTTPS 服务器共享 TCP 端口,从其手册页:
--port-share host port
When run in TCP server mode, share the OpenVPN port with another
application, such as an HTTPS server.
If OpenVPN senses a connection to its port which is using a non-OpenVPN
protocol, it will proxy the connection to the server at host:port.
Currently only designed to work with HTTP/HTTPS, though it would
be theoretically possible to extend to other protocols such as ssh.
由于 TCP 连接开销较大(TCP 三次握手),不建议使用 OpenVPN。如果您别无选择,可以尝试一下。
使用 OpenVPN,您可以避免任何端口限制并确保连接安全。请参阅如何设置 OpenVPN 以便可以从不安全的热点安全地使用互联网?有关设置 OpenVPN 的指南。
除非应用程序支持(如 OpenVPN),否则您无法共享端口,所以我必须让您失望。
SSH 服务器
基于密码的身份验证不限制连接尝试次数会带来麻烦。因此,最好使用基于密钥的身份验证,并完全禁用基于密码的身份验证。
安装openssh-服务器
通过运行
sudo apt-get install openssh-server
通过编辑配置文件来禁用基于密码的身份验证
/etc/ssh/sshd_config
。要开始编辑,请运行sudo nano /etc/ssh/sshd_config
。找到该行#PasswordAuthentication yes
并将其更改为PasswordAuthentication no
。默认情况下,SSH 监听端口 22。如果要更改它,出于安全原因,请使用低于 1024 的端口。(用 更改该行Port 22
)为了提高安全性,您可以配置允许登录的用户列表。添加一行:
AllowUsers someuser
替换
someuser
为允许登录的账户的用户名。多个用户名之间用空格分隔。生成密钥在你的电脑使用命令
ssh-keygen -t rsa
。输入您想要的任何值并选择一个安全密码。~/.ssh/id_rsa.pub
将文件内容复制到/home/someuser/.ssh/authorized_keys
服务器上的文件中。someuser
是应该允许登录的用户。(这是应该复制的一行,绝不复制以以下开头的文件的内容-----BEGIN RSA PRIVATE KEY
重新加载 SSH 服务器的配置:
sudo reload ssh
如果您通过 SSH 远程访问您的服务器,请验证您可以建立新的 SSH 连接以避免将自己锁定。