一般的远程访问步骤:
(1)选定某一种远程访问协议,如RDP,VNC,SSH,TelNet等;
(2)分别安装对应协议的"服务端软件"和"客户端软件";
(3)在服务端启动对应的协议,并进行一些自定义的服务配置;
(4)通过客户端远程连接。
一、Telnet协议
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在終端使用者的电脑上使用telnet程序,用它连接到服务器。終端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。
- Telnet服务的安装
Telnet有两个安装包:telnet-server和telnet
telnet-server安装包是服务器端的安装包,telnet是客户端的安装包,一般系统默认都已经安装了这两个包,可以先使用此命令查询:
rpm --q telnet-server
1)启动和停止Telnet服务
Telnet不像其它服务(如HTTP和FTP等)一样作为独立的守护进程运行,它使用xinetd程序管理,这样不但能提高安全性,而且还能使用xinetd对Telnet服务进行配置管理。
Telnet服务安装后默认并不会被xinetd启用,可以通过修改文件/etc/xinetd.d/telnet将其启用。编辑文件/etc/xinetd.d/telnet,找到语句disable=yes,将其改为disable=no即可。
2)Telnet服务的配置
2.1)Telnet服务最大连接数
可以通过编辑文件/etc/xinetd.d/telnet,在花括号{}中添加语句instances=3来配置telnet服务的最大连接数,这里的3指telnet服务同时只允许3个连接。
2.2) Telnet服务的端口
Telnet服务默认的端口为23,出于安生性考虑,可以更改服务器监听的端口,通过编辑文件/etc/services来修改各个服务的端口,找到telnet选项,修改其数值即可。如要改为2323,即:
telnet 2323/tcp
telnet 2323/udp
- Telnet客户端的使用
通过telnet命令即可登录
如Telnet服务器的IP地址为192.168.1.109
在客户端(windows和linux)命令行里输入:
telnet 192.168.1.109
然后输入用户和口令即可,在这里,系统不允许root用户通过telnet登录,所以这个用户是除root用户的其它用户,登录后可以使用su -- 命令切换成root用户,这样就OK了。
注:telnet在传输机制上是有安全漏洞的,因为它在传输数据时使用明文机制。
二、Rlogin协议
Rlogin最初是是现在unix系统中的远程登录协议。由于客户端进程和服务器进程已经事先知道了对方的操作系统类型,因此也就省去了选项协商机制。
默认使用TCP 513端口。
rlogin使用:
# chkconfig --list //检测rlogin服务是否开启
# chkconfig rlogin on //开启rlogin服务
//指定用户名登录(也可以直接rlogin IP登录)
# rlogin 192.168.1.88 -l hnlinux
Passord:
Last login:Mon May 28 15:30:25 from 192.168.1.88
注:总的来说,rlogin与telnet协议类似,在传输机制上是有安全漏洞的,因为它在传输数据时使用明文机制。
三、SSH协议
SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其它网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
SSH有两个不兼容的版本------SSH1和SSH2。
SSH1采用DES、3DES、Blowfish和RC4等对称加密算法保护数据安全传输,而对称加密算法的密钥是通过非对称加密算法(RSA)来完成交换的。SSH1使用循环冗余校验码(CRC)来保证数据的完整性,但是后来发现这种方法有缺陷。
SSH2避免了RSA的专利问题,并修补了CRC的缺陷。SSH2用数字签名算法(DSA)和Diffie-Hellman(DH)算法代替RSA来完成对称密钥的交换,用消息证实代码(HMAC)来代替CRC。同时SSH2增加了AES和Twofish等对称加密算法。
- ssh安装
Linux下广泛使用免费的OpenSSH程序来实现ssh协议,它同时支持SSH1和SSH2协议,Openssh软件包包括两部分:openssh-server和openssh-client,它们分别打包在不同的RPM包中,同时都需要依赖openssh软件包。
可以使用如下命令检查是否已经安装OpenSSH
rpm –qa openssh
(1) SSH服务的配置
配置SSH服务的运行参数,主要是通过修改配置文件/etc/ssh/sshd_config来实现的,这里面的选项特别多,但大部分都是使用#注释的,这是因为SSH服务使用默认配置已经能够很好的工作了
设置SSH服务监听的端口号
#port 22
设置使用SSH协议的顺序
#protocol 2,1
设置SSH服务器绑定的IP地址
#listenaddress 0.0.0.0
设置是否允许root管理员登录
#permitrootlogin yes
设置是否允许空密码用户登录
#permitemptypasswords no
设置是否使用口令认证方式
#passwordauthentication yes
每次修改配置文件/etc/ssh/sshd_config后,都需要重新启动SSH服务才能使新的配置生效。
(2) 启动和停止SSH服务
/etc/init.d/sshd start|stop|restart|status
2.SSH客户端的使用
(1)linux客户端
在linux客户端,可以使用命令ssh登录,如果SSH服务器的IP地址为192.168.1.109,登录命令如下:
//ssh 用户名@主机名或主机IP
ssh root@192.168.1.109
根据提示输入口令即可,这个口令是root用户的口令,所以登录之后就是root用户身份了。
(2)windows客户端
在windows客户端是无法使用ssh命令的,但是有许多SSH客户程序,如Xshell,SecureCRT,putty等。推荐使用免费的PuTTY程序,它小巧好用,而且是一款无需安装的绿色软件。
注:(1)SSH是比较可靠的的远程登录和其他安全服务的协议,它采用了数据加密机制,能够防止DNS欺骗和IP欺骗。(2)所传输的数据是经过压缩的,因此相对来说加快了传输速度。
四、RFB协议-VNC就是基于此协议
RFB协议即图形化远程管理协议,vnc远程管理工具就是基于此协议。
Telnet和SSH服务只能实现基于字符界面的远程控制,利用VNC可以实现图形化的远程控制。VNC是virtual network computing的缩写,也就是虚拟网络计算机,VNC软件由两个部分组成:VNC server和VNC viewer,用户需要将VNC server安装在被控制的计算机上,然后在主控制端执行VNC viewer控制被控制端。
1.安装vnc-server
首先可以用如下命令查询VNC服务是否安装:
rpm -q vnc-server
如果未安装,则使用如下命令安装:
yum install vnc-server
//或者使用下载的vnc的rpm包安装
rpm -ivh vnc-server-4.1.2-9.el5.x86_64.rpm
2.配置vnc用户,密码及桌面号,重启vnc服务
第一步:root用户登录系统,命令行输入vi /etc/sysconfig/vncservers 回车
第二步:按i建进入编辑,在最末端加入每一个用户的配置信息,注意每个用户有不同的桌面配置号,一定不要相同。如下配置:
VNCSERVERS="2:root 3:ymx 4:wjx 5:wxy"
VNCSERVERARGS[2]="-geometry 1360x768"
VNCSERVERARGS[3]="-geometry 1364x768"
VNCSERVERARGS[4]="-geometry 1362x768"
VNCSERVERARGS[5]="-geometry 1362x768"
2:root 3:ymx 4:wjx 5:wxy'中的'2 3 4 5'是为每一个用户桌面号,和[2]、[3]、[4]、[5]对应;
第三步:编辑完毕后,按esc键------>按shift +X键,回车保存配置。
添加完成后,vnc服务每次启动时都会自动创建这些桌面号。如果只需要启动桌面号为1的桌面可以执行命令"vncserver:1",使用"service vncserver start"会启动全部vnc桌面服务。
注:1.vnc服务使用的TCP端口号从5900开始例如桌面号为1,则使用的端口号为5901,桌面号为2,则使用的端口号为5902。基于java的vnc客户程序web服务TCP端口号从5800开始,即5801、5802,以此类推
2.ymx,wjx等用户需要提前使用useradd命令创建至系统。
第四步:配置每一个vnc用户的登录密码
注:要对每一个用户进行设置,设置前要用第一步的命令su -- ymx切换进入ymx用户shell下。
如果vnc用户中有root则不用切换(默认root用户登录系统的话),不过使用root用户运行vnc是不安全的行为,如果有vnc未授权访问漏洞时会造成很大威胁,应该以最小普通权限身份运行。
① 执行su -ymx命令
② 执行vncpasswd命令,对ymx用户进行设置VNC登录密码,输入两边密码。
重复以上两步对其它用户进行VNC登录密码设置
第五步:root用户登录系统,在终端命令行输入service vncserver restart 重新启动vnc服务,使之前的配置生效。(vnc启动和停止可以用service vncserver start|stop命令)
- 将vncserver设置为随系统启动
chkconfig vncserver on
或者: chkconfig vncserver --level 5 on
4.客户端连接及使用
a、在linux下,运行vncviewer命令即可,安装方法和vnc server相似,服务器地址如192.168.1.11:1
b、在windows下,运行windows版本的vncviewer即可,用法与linux下相近。
c、用浏览器(平台无关),作为java applet来实现,以形如http://192.168.1.11:5801 的方式来启动
注:如果连接不上可能是因为防火墙阻拦,可以用 service iptables status或ps axf | grep iptables查看防火墙状态。
解决的话,可以关闭防火墙
service iptables stop
也可以在防火墙规则中开放相关端口(假如vnc端口号为5901,5902)
iptables -I INPUT -p tcp --dport 5901:5902 -j ACCEPTiptables -A INPUT -p tcp --dport 5901:5902 -j ACCEPT
//在iptables文件末尾添加完之后,记得保存并重启iptables生效
五、RDP协议-远程桌面连接
RDP应用广泛,基本各平台上均可使用。Windows自带RDP,其Mstsc(Microsoft terminal service client)就是一 个典型的应用,默认监听TCP端口3389和UDP端口3389。它使得远程用户能够通过鼠标、键盘等在应用程序间进行通信。
- Windows远程控制Linux
通过RDP协议,Windows远程控制Linux的时候,Windows不需要安装什么,只需要在Linux上安装对应的软件即可,即所谓的RDP服务器。
(1)Linux安装xrdp (RDP服务器)
希望在Windows上用RDP协议远程登录到Linux系统比较麻烦,需要xrdp。它是一个RDP服务端,可以让我们用远程桌面方式登录到Linux系统。
首先要安装xrdp。
sudo apt install xrdp
(2)启动xrdp服务(linux要启动RDP协议的服务才行,即要允许远程访问)。
sudo systemctl enable xrdp
sudo systemctl start xrdp
现在应该可以使用Windows自带的远程桌面工具来连接到Linux系统了。
- Linux远程控制Windows电脑
可以通过grdesktop软件来控制远程Windows(图形化界面),也可以使用rdesktop 软件(命令行)
安装命令
sudo apt install grdesktop
安装之后打开软件输入IP,用户名,密码等信息即可连接。
当然对应的Windows系统别忘了开启允许远程连接到本计算机,否则用什么客户端也是无法连接的。
注:RDP支持图形化界面,但需要处理图像界面,占用CPU较高。另一个缺点就是如果平台不同的话,显示效果其实是很差的,RDP协议还是在Windows间使用比较适合。