系统环境:

CentOS7.2 + Tomcat8.5 + JDK18 + guacamole-server0.9.14

安装必要环境:

rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.rorpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpmyum update -y

安装依赖包

yum -y install cairo-devel libjpeg-devel libpng-devel uuid-devel  yum -y install ffmpeg-devel  freerdp-devel pango-devel libssh2-devel yum -y install libtelnet-devel libvncserver-devel pulseaudio-libs-devel  yum -y install openssl-devel libvorbis-devel libwebp-develyum -y install freerdp-plugins ##不安装剪切板不能用

下载安装包:

下载地址:

image.png

guacamole-server安装

tar zxf guacamole-server-0.9.14.tar.gz -C /optcd /opt/guacamole-server-0.9.14/./configure --with-init-dir=/etc/init.d##确认是否所有协议都支持------------------------------------------------   Library status:     freerdp ............. yes     pango ............... yes     libavcodec .......... yes     libavutil ........... yes     libssh2 ............. yes     libssl .............. yes     libswscale .......... yes     libtelnet ........... yes     libVNCServer ........ yes     libvorbis ........... yes     libpulse ............ yes     libwebp ............. yes     wsock32 ............. no   Protocol support:      RDP ....... yes      SSH ....... yes      Telnet .... yes      VNC ....... yes   Services / tools:      guacd ...... yes      guacenc .... yes   Init scripts: /etc/init.dmake && make install

启动guacd服务

# /etc/init.d/guacd startStarting guacd: SUCCESS

安装guacamole client

1、首先安装jdk 和tomcat,安装过程省略

2、安装client

mv guacamole-0.9.14.war /usr/local/tomcat/webapps

3、修改tomcat server.xml配置

4、启动tomcat

/etc/init.d/tomcat start

5、使用nginx做反向代理

vim /etc/nginx/conf.d/jump.conf

配置如下

upstream jumpserver {       server 127.0.0.1:8080; }server {    listen       80;    server_name  jumpserver.xxx.com;    charset utf-8;    access_log /var/log/nginx/access_80.log main;    location / {        proxy_pass http://jumpserver;        proxy_buffering off;        proxy_http_version 1.1;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_set_header Upgrade $http_upgrade;        proxy_set_header Connection $http_connection;        access_log off;}}

写一个tomcat启动脚本

#!/bin/bash # description: Tomcat Start Stop Restart # processname: tomcat # chkconfig: 234 20 80 JAVA_HOME=/usr/java/jdk1.8.0_151 export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH CATALINA_HOME=/usr/local/tomcat case $1 in start) sh $CATALINA_HOME/bin/startup.sh ;;  stop)    sh $CATALINA_HOME/bin/shutdown.sh ;;  restart) sh $CATALINA_HOME/bin/shutdown.sh sh $CATALINA_HOME/bin/startup.sh ;;  esac     exit 0

启动tomcat服务

chmod +x /etc/init.d/tomcat/etc/init.d/tomcat start

创建guacamole配置文件和目录

mkdir /etc/guacamole/

创建guacamole.properties文件

vim  guacamole.propertiesguacd-hostname: localhostguacd-port:     4822user-mapping.xml: /etc/guacamole/user-mapping.xmlenable-clipboard-integration: true

 创建授权文件 user-mapping.xml

        
                
                        
rdp
                        
172.16.0.10                        
13040                        
administrator                        
6bcr"ZqK*LgD;a                                
                        
ssh
                        
172.16.2.14                        
22                        
cpzeng                        
Dtihsvkr/Sp8gd4rz                        
true                        
127.0.0.1                        
/data/sftp                        
sftp                        
123                                 
                        
ssh
                        
172.16.2.3                        
22                        
cpzeng                        
Dtihsvkr/Sp8gd4rz                        
true                        
127.0.0.1                        
/data/sftp                        
sftp                        
123                         

每一个用户都有一个独立<authorize></authorize>配置段包起来,还可以使用md5加密的密码

使用明文密码
使用加密的密码

要远程连接的主机用<connection></connection>配置段包起来

      
ssh
      
172.16.2.14      
22      
cpzeng      
Dtihsvkr/Sp8gd4rz      
true      
127.0.0.1      
/data/sftp      
sftp      
123

connection配置中有几个参数是必须的,

protocol :使用的协议,如rdp、ssh、vnchostname: 主机ipport:端口username:登录使用的账号password: 登录密码enable-sftp:被连接的linux主机开启sftp,需要在linux服务器上配置sftp,下面会讲如何配置sftp-hostname:sftp服务器的ip,为本机127.0.0.1,我测试过写其他开启了sftp服务器机器ip,最后还是连到本机的sftp上了sftp-root-directory:登录linux机器后,sftp指定的路径,如果不配置改选项,则默认为/目录,可以使用web界面来选择上传文件的路径,如果要上传文件,则登录用户要有目标路径的写入权限,比如登录用户为user1,希望将文件上传到/opt/app目录,则user1要对/opt/app目录有写入权限。所有最好指定一个为777权限的路径sftp-username:sftp登录用户名sftp-password:sftp密码

使用guacamole

登录guacamole控制台

image.png

这里的账号密码使用/etc/guacamole/user-mapping.xml文件中<authorize></authorize>配置段中的username和password

如上面例子中账号密码为admin/123456,注意<connection></connection>中的username和password是服务器的账户密码

image.png

登录后选择要远程连接的机器

image.png

上传文件

同时按住control + alt + shift

在Devices标签下点击配置sftp路径(/data/sftp),点击Upload Files按钮,在弹出的窗口选择要上传的文件即可。注意:需要授权用户对目标路径有写入权限,我这里将/data/sftp目录权限设置为777了,之前一直提示无法上传文件,改了权限就正常了

image.png

SFTP配置

SFTP是要在每一台linux服务器上进行配置的,你要登录哪台机器,需要上传文件到该机器上,就需要配置SFTP,配置过程如下:

groupadd sftpuseradd -g sftp -s /sbin/nologin -M sftp

设置密码:

passwd sftp

创建sftp根目录,即存放文件的目录

mkdir -p /data/sftpchown root:sftp /data/sftpchmod 770 /data/sftp

修改sshd_config配置

#Subsystem sftp /usr/libexec/openssh/sftp-server  // 注释这一条配置,

新增以下配置

Subsystem sftp internal-sftpMatch User sftp        X11Forwarding no        AllowTcpForwarding no        ForceCommand internal-sftp        ChrootDirectory /data/sftp

vsftpd配置

windows服务器可以使用vsftpd来上传下载文件

生产环境vsftpd配置文件如下:

anonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=YESlisten_ipv6=NOpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YESchroot_local_user=YESascii_upload_enable=YESascii_download_enable=YESasync_abor_enable=YESlocal_root=/var/ftp/opsanon_root=/var/ftp

生产环境中的ftp禁止了匿名登录,只能让运维人员使用ops账号登录

[root@SRV-OPS10-JUMP02 ~]# ll /var/ftp/total 0drwxr-xr-x 3 root root 19 May  2 11:18 opsdrwxr-xr-x 2 root root  6 Aug  3  2017 pub[root@SRV-OPS10-JUMP02 ~]# ll /var/ftp/ops/total 0drwxr-x--- 2 ops ops 34 May  2 13:02 upload[root@SRV-OPS10-JUMP02 ~]# ll /var/ftp/ops/upload/total 0-rw-r--r-- 1 ops ops 0 May  2 12:39 New Text Document.txt

测试环境的vsftpd.conf配置

anon_upload_enable=YESanonymous_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YESlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESlisten=NOlisten_ipv6=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YESallow_writeable_chroot=YESchroot_local_user=YESchroot_list_enable=YESchroot_list_file=/etc/vsftpd/chroot_listlocal_root=/var/ftpanon_root=/var/ftp/pub

补充

在生产中发现ssh协议连接linux机器,会出现乱码的情况。这是因为guacamole机器字体不对,可以从windows机器下载黑体和宋体字到linux机器上。

具体操作方法请参考

如果想更换ssh登陆后的字体和颜色,可以在ssh配置中加上color-scheme 参数配置,可选参数:black-whitegray-blackgreen-blackwhite-black

例如:

      
ssh
      
10.9.186.188      
22      
ansible      
poKh8gwRmla4e"      
white-black