如果你手上没有实体服务器,那就可能需要租用服务器提供商的各种类型的服务器。 当租用服务器时,不可避免的一个问题就是服务器的远程连接。 通常,我们会使用SSH协议进行连接,对应的软件有Finalshell、PUTTY、WinSCP、Xshell等。 而有时,我们又想连接服务器的远程桌面,进行图形化操作(当然这对大部分人来说完全没有必要,命令行足够了),远程桌面对应的软件有windows远程桌面、Xmanager等。 本文将对这些连接方式、软件、协议进行简要介绍,快来看看你的服务器以及你的业务适合哪种连接吧。(基于自己使用经验,并不包含所有工具/协议) |
SSH即Secure Shell(安全外壳协议):是一种在不安全网络上用于安全远程登录和其他安全网络服务的协议。我们在使用远程登录以及Github服务时就经常接触这个协议了。
SSH 为建立在应用层
基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH
最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。
SSH 协议存在以下特征:
- 有效防止远程管理过程中的信息泄漏;
- 传输 数据加密,能够防止DNS和IP欺骗;
- 传输 数据压缩,加快传输速度。
UNIX 平台系统(Linux/MacOS)等一般都默认安装了 SSH 客户端,直接在终端中使用SSH命令即可,Windows 等其它平台则需要手动安装 SSH 客户端,较常用的Windows SSH客户端有Putty
、XShell
、Finalshell
等。
查看ssh服务是否开启:
netstat -tlp | grep ssh
例:
root@CQUPTLEI:~# netstat -tlp | grep ssh
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN 1000/sshd: /usr/sbi
tcp6 0 0 [::]:ssh [::]:* LISTEN 1000/sshd: /usr/sbi
启动/停止/重启 ssh服务
sudo /etc/init.d/ssh start
sudo /etc/init.d/ssh stop
sudo /etc/init.d/ssh restart
SSH服务端配置文件默认为/etc/ssh/sshd_config
,可以按需修改默认22
端口等配置。
连接命令:
ssh [-options] [user@hostname]
options | 含义 |
---|---|
-p |
指定ssh端口号,默认端口为22 |
-i |
使用指定私钥文件连接服务器免密登录 |
user
远程服务器登录的用户名,默认为当前用户hostname
远程服务器地址。可以是IP/域名/别名exit
或logout
命令均可退出当前登录例:
# 以root用户登录192.168.1.196的到ssh服务器
$ ssh [email protected]
# 以root用户登录到192.168.1.198的ssh服务器,使用2222端口
$ ssh -p 2222 [email protected]
自己指定端口时候,注意防火墙设置,放行相应的端口。
SSH还有一些高级配置,如服务器别名、免密/免秘钥登录等,以及更底层的原理,本文就不过多介绍了。
接下来简要介绍一下我经常使用的通过SSH协议远程登录服务器的windows软件(SSH客户端)
这是我最早使用的SSH客户端。
PuTTY是一个Telnet、SSH、rlogin、纯TCP
以及串行接口连接软件。
较早的版本仅支持Windows平台,在最近的版本中开始支持各类Unix平台,并打算移植至Mac OS X上。除了官方版本外,有许多第三方的团体或个人将PuTTY移植到其他平台上,像是以Symbian为基础的移动电话。PuTTY为一开放源代码软件,主要由Simon Tatham维护,使用MIT licence授权。随着Linux在服务器端应用的普及,Linux系统管理越来越依赖于远程。在各种远程登录工具中,Putty是出色的工具之一。Putty是一个免费的、Windows x86平台下的Telnet、SSH和rlogin客户端,但是功能丝毫不逊色于商业的Telnet类工具。最新的版本为 0.78
PUTTY官网:https://www.putty.org/
优点:
◆ 完全免费
◆ 在 Windows 9x/NT/2000 下运行的都非常好
◆ 全面支持 SSH1 和 SSH2
◆ 体积很小
◆ 操作简单
如图,我用ipv6
地址连接我的vps,非常简约,就这一个命令行界面。
WinScp我之前写过一篇文章:【WinSCP】强大的可视化远程文件传输 、管理工具
WinSCP官网:https://winscp.net/eng/docs/lang:chs
WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。
主要特点就是文件可视化,就像操作本机目录一样,在本地与服务器之间传输文件很方便。
WinSCP也可以打开服务器的终端(像上面的putty那样),但不建议这样做,应为WinSCP的终端功能和文件可视化功能不能同时操作,必须关掉终端后才能可视化操作文件目录。
建议的方式是:使用putty打开服务器终端,在WinSCP中对服务器中的文件目录进行可视化地操作。
不过这样要打开2个软件,没有必要。1.4节中的Finalshell可以完美地解决这个问题。
WinSCP用于主机间的文件传输还是不错的,直接从本地的目录(左边)拖到服务器就行了(右边)。
在我用过的SSH客户端里面,这应该是最好用的一款了。
地址:http://www.hostbuf.com/c/131.html
主要特色:
- 云端同步
- 免费海外服务器远程桌面加速
- ssh加速
- 本地化命令输入框
- 支持自动补全
- 命令历史
- 自定义命令参数
直接来看这个界面,很多优点就一目了然了。
绝大多数情况下,使用上面介绍到的终端+可视化目录
就足以胜任我们的工作需求了。
不过偶尔有些需求使用可视化远程桌面操作更方便。
但要注意,远程桌面的开销会大很多,本机带宽、服务器带宽(主要是这个)、时延、服务器性能等都对连接质量有很大的影响。我使用一个4M带宽的国内服务器进行远程桌面连接,都会有些卡顿(不过能用)。
考虑一个问题:国内服务器带宽昂贵,1M带宽与10M带宽价格相差甚远;国外服务器可能延迟高。
如果你迫不得已要连接服务器的远程左面,请考虑这些因素。如果你有相关的业务,可以考虑租用云桌面,我体验过阿里云的云桌面,还不错。感兴趣的可以去体验下,我记得好像可以实用一个月。
可以看一下使用windows远程桌面的演示视频(ubuntu20.04,腾讯云,4M):
服务器远程桌面
安装GUI桌面:
sudo apt update
sudo apt install ubuntu-desktop
安装rdp服务(Remote Desktop Protocol):
sudo apt install xrdp
默认端口是3389,若要修改:
sudo nano /etc/xrdp/xrdp.ini
查看运行状态:
sudo systemctl status xrdp
在防火墙上打开 RDP 端口,如果买的国内服务器,一般云防火墙都是打开该端口的。
sudo ufw allow 3389
远程桌面协议(RDP)
是一个多通道(multi-channel)的协议,让使用者(所在计算机称为用户端或’本地计算机’)连上提供微软终端机服务的计算机(称为服务端或’远程计算机’)。
远程桌面是方便windows服务器管理员对服务器进行基于图形界面的远程管理.远程桌面是基于RDP(RemoteDesktopProtocol远程桌面协议)的。
在windows的搜索栏搜索远程桌面
打开即可:
(或者从Finalshell中添加远程桌面连接,新建>远程桌面连接
,不过最终还是用的windows远程桌面)
打开,输入服务器的ip地址,点击链接,在弹出的界面输入用户名和密码(也即是ssh登录的用户名和密码)即可。
界面可能与你在本地电脑安装的ubuntu不太一样,大同小异了。另外,界面是英文的,个人感觉没必要安装中文。点击桌面左上角的Activities即可看到程序坞。
使用完了,最好log out一下。减少服务器内存占用。
可能出现的问题:
如果你使用root账户登录,可能输入了正确的密码,仍然显示无法登录。
解决方法:
vim /etc/pam.d/gdm-password
注:vim下,按键盘 i 即可进入编辑模式,esc退出编辑模式,:wq保存并退出。
VNC (Virtual Network Console) 是虚拟网络控制台的缩写。它 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的。VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美。
在 Linux 中,VNC 包括以下四个命令:vncserver
,vncviewer
,vncpasswd
,和 vncconnect
。大多数情况下用户只需要其中的两个命令:vncserver 和 vncviewer。
VNC基本上是由两部分组成:一部分是客户端的应用程序(vncviewer) ;另外一部分是服务器端的应用程序(vncserver)。Linux系统一般都自带有VNC服务(可以在设置,共享那里看到)。本文安装的是更好用的TigerVNC
VNC是基于RFB( Remote Frame Buffer 远程帧缓冲) 协议(RFB基于TCP)的。
主要特点:
遵守RFB协议的RFB客户端是一个无状态的客户端,若RFB客户端从一台RFB服务器断开后重新连接到 RFB 服务器端,RFB客户端的图形用户界面就已经被保存。另外,不同的RFB客户端终端能够连接到相同的RFB服务器终端上,在新的RFB客户端终端上能够得到和原来的RFB客户端终端相同的图形用户界面。
服务器安装VNC:
sudo apt install tigervnc-common
sudo apt install tigervnc-standalone-server
设置VNC远程访问密码:
vncpasswd
编写启动文件:
touch ~/.vnc/xstartup
vim ~/.vnc/xstartup
chmod +x ~/.vnc/xstartup
其中xstartup的内容为:
#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &
启动vnc server:
(后面是分辨率和编号)
vncserver -localhost no -geometry 1920x1080 :1
查看启动的VNC信息: vncserver -list
root@CQUPTLEI:/# vncserver -list
TigerVNC server sessions:
X DISPLAY # RFB PORT # PROCESS ID
:1 5901 266743
注意这里的DISPLAY和RFB PORT值。
放行服务器端口:上面是5901。我直接去腾讯云控制台添加防火墙规则。
可以实用这个网站查询端口开放情况:http://coolaf.com/tool/port
注意:每运行一次vncserver,就会新增一个vnc服务,DISPLAY 值会递增,通过DISPLAY 值,可以建立多个vnc连接,也就是开多个远程桌面,或者说多个用户访问同一服务器的远程桌面。
删除指定id的远程桌面连接:
vncserver -kill :1
下载客户端:https://www.realvnc.com/en/connect/download/viewer/
(windows、MacOS、Linux版都有)
安装后打开,需要先注册账号,登录。按提示注册就行。
打开,点击文件,新建连接,server这里是ip地址:DISPLAY 值
VNC远程桌面如图所示:
会根据带宽情况自动降低清晰度,以达到较好的响应速度。
官网:https://www.xshellcn.com/
如图所示,新建Xmanager RDP
就可以了,也是使用的RDP协议。
Xmanager也提供Xshell用来进行SSH连接,Xmanager我使用的很少,这个远程桌面感觉速度有点慢。以后换个带宽高的服务器再试试。
另外,这是付费平台(Finalshell也支持付费解锁高级功能,如高级网络监控、打包传输、进程管理等),本文是14天试用版本。
本文所列举的软件仅为本人目前使用过的,仅供学习、了解用,生产环境中还是应该选择正版、安全、专业的远程连接软件(多为付费)。