远程桌面控制"/>
架设SSH服务器与VNC远程桌面控制
19.1架设SSH Server19.1.1 SSH协定及加密技术
还记得在第十一章介绍过的远端连线指令 telnet及ssh吧!由于telnet在资料传输过程的不安全,因此都鼓励大家使用ssh。 那要提供SSH 服务来给Client 端做远端连线时,当然就要架设SSH Server 了。
SSH 可以取代传统的r 指令(rsh、rlogin、rcp)、finger 及telnet 这一类较不安全的连线工具。 使用SSH (Secure SHell),可让我们所传输的资料都事先经过加密,因此Client 端可以使用scp 指令在两台电脑间很安全的复制资料,也可以使用sftp 指令来安心的存取ftp 服务。
SSH协定的版本
SSH 协定目前有SSH1 ( SSH protocol version 1 ) 及SSH2 ( SSH protocol version 1 ) 两种版本,当然现在的主流是SSH2,因为它提供了比SSH1 更安全的资料传输。
在SSH 上头,常见到的加密演算法有RSA、DSA 及Diffie-Hellman 等。 SSH1 主要是使用RSA 的加密技术,而SSH2 除了RSA 以外,还有DSA 及Diffie-Hellman 等等。
SSH加密流程
SSH1加密技术 | ||||||||||||||||
| ||||||||||||||||
SSH2加密技术 | ||||||||||||||||
|
19.1.2需安装套件及检视套件内容
SSH所需套件
套件名称 | 简单描述 |
openssh | SSH Server的主要套件。 |
SuSE预设就已经把此套件以及其相依套件都帮您装上了,所以这部分不用各位操心。
查询套件内容
suse:~ # rpm -ql openssh
|
19.1.3设定OpenSSH Server
在介绍设定档之前,先认识一下/etc/ssh 目录中的几个档案:
suse:/etc/ssh #ls ssh_host_dsa_key ssh_host_key.pub sshd_config ssh_host_dsa_key.pub ssh_host_rsa_key ssh_host_key ssh_host_rsa_key.pub |
针对以上几个档案做个简短说明:
sshd_config :SSH Server的主要设定档。
ssh_host_key、ssh_host_key.pub:ssh1的RSA private key及RSA public key。
ssh_host_rsa_key、ssh_host_rsa_key.pub:ssh2的RSA private key及RSA public key。
ssh_host_dsa_key、ssh_host_dsa_key.pub:ssh2的DSA private key及DSA public key。
设定sshd_config
接着就对SSH Server 的设定档做个大略的解说:
suse:/etc/ssh # vi sshd_config #以下被注解起来的参数为系统的预设值。若要修改时,将注解拿掉并指定新的参数值即可。 # Port 22 # SSH预设所使用的port。 # Protocol 2,1 # 表示支援SSH1及SSH2。 # ListenAddress 0.0.0.0 # sshd所监听的介面位址。 预设是监听所有的介面位址。 # 以下的HostKey参数,是指定host private key所存放的档案。 # HostKey for protocol version 1 # HostKey /etc/ssh/ssh_host_key # HostKeys for protocol version 2 # HostKey /etc/ssh/ssh_host_rsa_key # HostKey /etc/ssh/ssh_host_dsa_key # Lifetime and size of ephemeral version 1 server key # KeyRegenerationInterval 1h #SSH1预设每小时会重新产生一次server key。 # ServerKeyBits 768 # SSH 1预设所使用server key的长度为768 bits。 # SyslogFacility AUTH # 指定SSH的讯息纪录是使用预设的AUTH这个facility。 至于其他可用者如 #DAEMON, USER, LOCAL0 ~ LOCAL7 等。 # LoginGraceTime 2m # 当使用者连上SSH Server后,若两分钟内无法认证成功,则会被断线。 #如设定成0,表无时间限制,另外时间单位未指定时,预设为秒。 # PermitRootLogin yes # SSH Server预设是允许root登入的。 您可以考虑把它改成no。 # RSAAuthentication yes # 是否允许使用SSH1的RSA认证。 # PubkeyAuthentication yes # 是否允许使用SSH2的public key作认证。 # AuthorizedKeysFile .ssh/authorized_keys # 当采用key认证时,于Client端所产生的public key,要存放在Server上的哪个档案内。 PasswordAuthentication no # 是否要采用密码认证。 预设为yes。 UsePAM yes # 是否使用PAM认证模组来进行认证工作。 预设为no。 DenyUsers user1 user2 # 设定拒绝登入的使用者名单。 |
SuSE 预设开机时会启动SSH 服务,所以设定档如有做任何的修改,请重新启动sshd:
suse:~ # rcsshd restart |
19.1.4 SSH Client端常使用的连线工具
指令ssh 及putty 软体
这个ssh 指令是Linux Client 常使用的远端连线程式,至于putty 或pietty 则是windows 中较出名的连线工具。
ssh for Linux: | |||
以上的范例应该没问题才是。 如有所遗忘,请回到[ 11.3.3远端连线指令 ]去做个复习。 | |||
putty for Windows: | |||
想在Windows 中对Linux 的SSH Server 做远端连线,可至官方网站去下载putty 软体:
接着请输入伺服器的位址及所使用协定,并于[Saved Sessions] 处填写个具代表性的名称,最后按下[Save] 来将设定纪录保留下来:
以下是选择性的调整。 首先调整putty 视窗大小:
再来调整一下字型的部分,请先点选[Appearance],然后按下右边的[Change]:
这里就视您需要做调整啰:
修改完成后,请点选[Session] 来回到主画面,再按一次[Save] 把刚刚所做的修改保留下来:
就这么简单而已,自己试试看噢。 |
指令scp
想要在两主机之间很安全的执行复制的动作,就使用这个指令吧!
范例说明 :
范例一:将远端SSH Server上的/etc/passwd复制到本机/tmp目录下。 client:~ # scp 192.168.1.111:/etc/passwd /tmp Password: ←输入远端主机上root的密码。 范例二:将本机的/var/log目录复制到远端主机的/tmp/logdir中。 client:~ # scp -r /var/log 192.168.1.111:/tmp/logdir Password: ←输入远端主机上root的密码。 #这个范例中,如logdir已存在于远端主机上,那么会把log目录整个复制到logdir #目录下,如logdir不存在,则会将log目录的内容复制到logdir中。 范例三:将远端主机tina家目录下的file,复制到本地端的/tmp目录中。 mary@client:~> scp tina@192.168.1.111:~/file /tmp Password: ←输入远端主机上tina的密码。 #档案复制回来后,观察一下/tmp/file的拥有者可是mary噢。 范例四:将本机/tmp/file复制至远端主机的/tmp目录中。 mary@client:~> scp /tmp/file tina@192.168.1.111:/tmp Password: ←输入远端主机上tina的密码。 #此时远端主机的/tmp/file,其拥有者为tina。 |
指令sftp
这是另一个可以使用的档案传输工具,与ftp 操作介面类似,不过其所传输的资料是会事先经过加密的噢。
范例说明 :
mary@client:~> sftp tina@192.168.1.111 Connecting to 192.168.1.111... Password: ←输入远端主机上tina的密码。 sftp> #这里的操作与传统的ftp差不多。 不清楚的话,可输入" ? "来了解有哪些指令可以利用, #很容易的,自己练习看看。 |
19.1.5使用key来做认证
前面我们所介绍的SSH 连线过程,都是使用密码来做认证,而这一小节要介绍另一个更安全的做法,就是使用public key 认证。 先说明等一下key 认证的执行步骤:
1. | Client端的使用者mary,想以Server上barry的身分做远端连线。首先Client端的mary,先执行ssh-keygen指令,以产生一对RSA或DSA key pair (公钥及私钥)。 | |
2. | Client端确认在/home/mary/.ssh/目录下,有产生一对public key及private key,顺便检视.ssh目录及此目录下的private key,其权限是否分别为700及600。 | |
3. | 再来将刚刚所产生的public key,存放至Server端/home/barry/.ssh/authorized_keys中。 |
步骤就那么简单,马上实做一次吧:
1. Client端先产生一对key pair: |
接着进行测试:
mary@Client:~>ssh barry@192.168.1.111 Enter passphrase for key '/home/mary/.ssh/id_dsa':←输入当初设定的通关密语。 Last login: Mon Dec 5 16:25:25 2006 from 192.168.1.130 barry@ suse :~> |
好了,目前已经成功的使用public key 来做认证了。 不过在这个范例中,因为当初有设定通关密语的关系,所以在连线过程会要求您做输入。 如果现在希望能略过这个步骤,也就是不想输入通关密语而能直接连线,则需启用代理认证,详细做法如下:
mary@Client:~> ssh-agent bash # 启用代理认证。 mary@Client:~> ssh-add Enter passphrase for /home/mary/.ssh/id_dsa:←请输入通关密语。 Identity added: /home/mary/.ssh/id_dsa (/home/mary/.ssh/id_dsa) # 将private key 加入代理认证之中。 # 完成后做个连线测试: mary@Client:~> ssh barry@192.168.1.111 Last login: Mon Dec 5 18:00:13 2006 from 192.168.1.130 barry@suse:~> # 注意到没,这次连线过程没有要求您输入通关密语。 #启用代理认证时,会进入到另一个shell (sub-shell)之中,因此当您要结束 #代理认证时, 即可执行exit指令,来退回原来的shell。 |
采用key 认证的做法就大致如此。 现在再出个状况,如果在Client 端又有另一个使用者tina,也想透过key 认证方式来以server 上barry 的身分做远端连线时该怎么做呢? 请参考以下的做法:
# 先产生RSA key pair: |
Client 端测试:
tina@Client:~> ssh barry@192.168.1.111 Last login: Tue Dec 6 15:23:49 2006 from 192.168.1.130 barry@suse:~> # 注意到没?这次连线过程没有要求您输入通关密语噢,因为 #刚刚在建立RSA key pair的过程,根本就没有做设定啊。 |
19.2 VNC远端桌面遥控
19.2.1 VNC概述
VNC (Virtual Network Computing) 为一远端桌面遥控软体,是由AT&T 所开发的,并使用GPL 授权模式来对外发行,亦即其是一开放原始码的软体,任何人皆可免费自由取得。
VNC 最大特色是支援许多不同的操作平台,您可以将其安装在Windows、MacOS、Unix、Unix-Like 等等的作业系统上,并可在这些不同的作业系统间来相互操作。
VNC 软体可区分成两个部分,即VNC viewer ( 主控端) 跟VNC server ( 被控端),您只要在Sever 端安装VNC server 软体后,就可以于Client 端使用VNC viewer 软体来对其进行远端遥控。 另外即使Client 端没有安装VNC viewer 软体也没关系,因为Client 端也可以直接透过浏览器来进行远端桌面操控。
19.2.2安装所需软体
由于VNC 可以在相同或不同的作业系统间做远端遥控,因此等会儿我们就尝试看看如何在windows 及linux 间,相互使用VNC 来做远端操控啰。 不过于实作之前,请您先把在linux 及windows 上头所需安装的软体先搞定再说。
SuSE Linux 里已经同时包含了VNC server 及VNC viewer 软体,因此您不须额外下载。 至于所需套件为xorg-x11-Xvnc 及tightvnc,赶快检查看看吧!
至于windows 的话,请先至www.realvnc 下载VNC 软体,然后再进行安装。 详细步骤请参考以下。
下载VNC软体( for windows )
连上VNC网站,并点选[download it now] :
点选[Download & use] :
点选[Procceed to download] :
下载for windows的免费VNC软体:
接受声明并下载:将下载档案储存起来:
安装VNC启动刚刚下载回来的执行程式来开始进行安装,步骤如下:
图一:VNC设定精灵画面
图二:接受授权同意声明
图三:VNC预设的安装位置画面
图四:选择安装项目
图五:设定存放VNC程式捷径之处
图六:执行额外工作的设定画面
图七:准备安装画面
图八:准备设定VNC Server的密码
图九:设定VNC Server密码画面
在图九中按下[OK] 后,会回到图八画面,此时点选[确定] 即可。
图十:重要讯息画面
图十一:VNC设定精灵完成画面
这样就安装完毕了,够简单吧。
19.2.3 Windows远端遥控Linux这一小节主要是要介绍如何以Linux担任VNC server,并让Windows的Client端能对其进行远端操控,因此重点就放在Linux的设定上头啰。
设定Linux担任VNC server
初次启动VNC server | |||
| |||
修改VNC预设要执行的Script | |||
| |||
重新启动VNC server | |||
这样就完成了被控端的设定了。 而将来如果您想修改VNC server 上的连线密码,则请直接输入vncpasswd 指令去修改即可。 |
Windows远端操控Linux
这里会分别以安装在Windows上的VNC viewer软体及网页浏览器方式,来对Linux做远端操控。
使用VNC viewer程式 | ||
如果您刚刚在Windows 上头安装VNC 软体时,是按照笔者的步骤进行的话,那么在您工作列上应该可以看到VNC viewer 这个应用程式的icon,请直接点选来执行,此时应该可以看到如下的画面:
请将您Linux 主机位址填写进去吧,另外要注意到在位址后端需指定VNC 所提供的X Server 视窗编号噢。 没问题的话请点选[OK],接下来即会要求您输入当初在VNC Server 上所设定的密码:
这时候应该能顺利看到Linux 的视窗桌面了。 另外如果想开启多个视窗桌面,那么请点选图一底下的[options] 项目,并于[Misc] 中把[Shared connection] 选项打勾即可:
而在此选项底下,还有个[Full-screen mode],这当然就是全萤幕模式啰﹔在您调整成Full-screen mode 后,如想调整回来,可按下F8 并选取[还原] 就行了。调整完毕,请把设定值保留起来:
| ||
使用网页浏览器 | ||
如果您没安装VNC viewer 软体也没关系啦,直接于浏览器的网址处输入VNC server 的位址即可: 请留意网址后端的连接埠须指定5801 port,也就是把5800 port 加上您VNC server 所提供的X Server 视窗编号﹔如果当初VNC server 提供的视窗编号是2 的话,那这里就须指定5802 port。 | ||
19.2.4 Linux远端遥控Windows
假如您Windows上头的VNC server已启动,且也已设定好连线密码了,接着就可以在Linux上作测试啰。首先请您登入X-Window,开启一个terminal并执行vncviewer指令,然后输入server的IP及连线密码即可:
认证成功后,就可以开始远端操控Windows了噢。另外如果您是想使用浏览器做连线的话,请于URL上头输入: http://192.168.1.220:5800/,自己试试看吧!
不同作业系统间的VNC操作,大致是如此啦,简单吧!接着您可自行练习在两台同为Windows或Linux的主机上做VNC远端操控啰。
转自柏青哥的Suse Linux
更多推荐
架设SSH服务器与VNC远程桌面控制
发布评论