这一节学习了如何在Linux和windows下对RHEL进行远程访问。主要包括了SSH的密码,密钥访问,XShell以及VNC的使用


首先来看看Linux下如何远程访问另外一台服务器。


现在我有两条服务器 rhce7-00 和 rhce7-01,IP地址如下所示


rhce7-01

RHCE 学习笔记(10)  远程访问_ rh124


rhce7-00

RHCE 学习笔记(10)  远程访问_ rhel7_02


从00上远程访问01,很简单,直接输入 ssh IP地址即可 ,这是以当前用户(root)的身份进行访问。第一次连接的时候会确认指纹信息等等。


RHCE 学习笔记(10)  远程访问_rhce_03


可以查看一下帮助信息 看看ssh命令能做哪些事情

RHCE 学习笔记(10)  远程访问_rhce_04


如果想以指定用户身份登录,可以通过-l 选项或者电子邮件的格式指定


例如

RHCE 学习笔记(10)  远程访问_ rhel7_05


RHCE 学习笔记(10)  远程访问_  ssh_06


在当前用户的家目录下有个隐藏目录 .ssh, ssh搭建的远程连接会自动把远程主机的信息保存在known_hosts文件里面,这样下次再连接的时候就不会询问指纹相关的问题了


RHCE 学习笔记(10)  远程访问_rhce_07


如果想远程的打开图像工具怎么办?如下所示,直接运行firefox会报错


RHCE 学习笔记(10)  远程访问_rhce_08


解决方式很简单,添加一个-X,就表明要打开X窗口了,再次运行firefox成功

RHCE 学习笔记(10)  远程访问_ rh124_09


firefox还会显示这是一个运行在rhce7-01上的进程

RHCE 学习笔记(10)  远程访问_rhce_10



SSH访问远程服务器的时候,每次都会要求输入密码,如何避免这个麻烦呢?可以通过密钥的方式实现。基本原理是在当前主机上生成一对密钥,然后将公钥传送给远程主机,当进行远程访问的时候,对方会对一个随机值进行公钥加密,发送给本机,本机用私钥解密之后再发送回去,对方会对这个值进行匹配验证,如果相同,那么表示通过。豆子之前玩过一段时间aws,aws上的Linux虚拟机都是用这种密钥的方式进行远程访问的。


基本操作,首先生成一对密钥, 里面的passphrase是指的对私钥进行同步加密,这样的话,当用户在本机进行验证的时候,用户还必须输入passphrase进行同步解密。这里为了简便,我就不输入密码了


RHCE 学习笔记(10)  远程访问_ rhel7_11


看看生成的这一对密钥


RHCE 学习笔记(10)  远程访问_  ssh_12


看看具体的内容


首先是私钥,这个保留在本机用来解密


然后是公钥,这个会发送给对方以便加密

RHCE 学习笔记(10)  远程访问_rhce_13


通过ssh-copy-id将公钥传送给对方

RHCE 学习笔记(10)  远程访问_rhce_14


传送完毕之后,直接访问则无需再输入密码

RHCE 学习笔记(10)  远程访问_ rhel7_15


感兴趣的话还可以看看ssh-copy-id有哪些其他选项

RHCE 学习笔记(10)  远程访问_  ssh_16


切换到远程主机,看看对方的.ssh目录下生成了一个authorized_key 的文件,打开看看,内容和本机的公钥是一样的。


RHCE 学习笔记(10)  远程访问_ rh124_17


关于公钥,私钥,数据信封,证书等知识我不赘述了,豆子几年前拜读过某人的博客,解释的非常好,这里再转一下

http://www.cnblogs.com/1-2-3/archive/2007/09/17/colloquialism-digital-certificate-part1.html




接下来看看windows下面如何进行访问。豆子平常习惯使用putty或者secureCRT,这里老师推荐的是Xshell。安装完XManager之后,打开Xshell,设定好IP,输入用户名和密码就可以远程访问了。


RHCE 学习笔记(10)  远程访问_rhce_18


如果在XShell使用密钥,基本过程和Linux类似,依然是生成密钥对,传送公钥到远程主机


点击Tools- New user key Wizard

RHCE 学习笔记(10)  远程访问_ rh124_19


选择算法和密钥长度

RHCE 学习笔记(10)  远程访问_  ssh_20


生成公钥

RHCE 学习笔记(10)  远程访问_ rhel7_21


这个passphrase为了省事其实可以不写

RHCE 学习笔记(10)  远程访问_ rh124_22


保存公钥,完成

RHCE 学习笔记(10)  远程访问_  ssh_23

RHCE 学习笔记(10)  远程访问_rhce_24


拷贝公钥到远程主机

RHCE 学习笔记(10)  远程访问_ rh124_25


把这个公钥复制到对应的位置,并修改名字

RHCE 学习笔记(10)  远程访问_ rhel7_26


在XShell里面新建个连接就可以绑定了

RHCE 学习笔记(10)  远程访问_rhce_27

RHCE 学习笔记(10)  远程访问_  ssh_28

RHCE 学习笔记(10)  远程访问_ rh124_29


最后我们来看看相关的ssh配置文件。在/etc/ssh目录下,sshd_config可以配置服务器角色的设定;ssh_config可以配置客户端角色的设定; ssh_host* 则是各种指纹文件


RHCE 学习笔记(10)  远程访问_  ssh_30


比如sshd可以配置是否允许密钥认证,或者密码认证


RHCE 学习笔记(10)  远程访问_  ssh_31


ssh里面可以配置端口,是否进行严格的密钥确认等等

RHCE 学习笔记(10)  远程访问_ rhel7_32



如果想远程访问图形界面,还可以使用vnc,简单的说就是在服务器端安装vnc server,然后客户端安装vnc viewer进行访问;这个是个跨平台的工具,豆子在Windows,OSX和Linux下都经常使用vnc,甚至手机越狱了都是可以用vncviewer远程控制的。


红帽有官方文档具体介绍如何使用VNC工具

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-TigerVNC.html


下面简单的截图演示一下


首先安装tigervnc-server

RHCE 学习笔记(10)  远程访问_ rhel7_33


拷贝服务文件, 他的默认端口是5900,也可以给不同的用户自定义端口,比如5就表示5905端口

RHCE 学习笔记(10)  远程访问_rhce_34


修改一下文件,其实就是把用户名绑定这个服务

RHCE 学习笔记(10)  远程访问_ rh124_35


把<user>替换成用户名

RHCE 学习笔记(10)  远程访问_ rh124_36


添加防火墙

RHCE 学习笔记(10)  远程访问_  ssh_37


开机自动运行,启动服务;有的时候enable之后还需要重启系统才能启动服务。

RHCE 学习笔记(10)  远程访问_  ssh_38


测试,这里我可以用IP:5905或者IP:5都是可以的

RHCE 学习笔记(10)  远程访问_rhce_39


可以看见这个进程是绑定到我的beanxyz用户的

RHCE 学习笔记(10)  远程访问_ rhel7_40


重复以上操作,绑定James端口到5904,登录显示为James

RHCE 学习笔记(10)  远程访问_ rh124_41