系统环境:
CentOS7.2 + Tomcat8.5 + JDK18 + guacamole-server0.9.14
安装必要环境:
rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm yum 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-devel yum -y install freerdp-plugins ##不安装剪切板不能用
下载安装包:
下载地址:https://guacamole.apache.org/releases/0.9.14/
guacamole-server安装
tar zxf guacamole-server-0.9.14.tar.gz -C /opt cd /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.d make && make install
启动guacd服务
# /etc/init.d/guacd start Starting 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.properties guacd-hostname: localhost guacd-port: 4822 user-mapping.xml: /etc/guacamole/user-mapping.xml enable-clipboard-integration: true
创建授权文件 user-mapping.xml
rdp 172.16.0.10 13040 administrator 6bcr"ZqK*LgD;assh 172.16.2.14 22 cpzeng Dtihsvkr/Sp8gd4rz true 127.0.0.1 /data/sftp sftp 123ssh 172.16.2.3 22 cpzeng Dtihsvkr/Sp8gd4rz true 127.0.0.1 /data/sftp sftp 123
每一个用户都有一个独立
使用明文密码使用加密的密码
要远程连接的主机用
ssh 172.16.2.14 22 cpzeng Dtihsvkr/Sp8gd4rz true 127.0.0.1 /data/sftp sftp 123
connection配置中有几个参数是必须的,
protocol :使用的协议,如rdp、ssh、vnc hostname: 主机ip port:端口 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控制台
http://ip:8080/guacamole-0.9.14
这里的账号密码使用/etc/guacamole/user-mapping.xml文件中
如上面例子中账号密码为admin/123456,注意
登录后选择要远程连接的机器
上传文件
同时按住control + alt + shift
在Devices标签下点击配置sftp路径(/data/sftp),点击Upload Files按钮,在弹出的窗口选择要上传的文件即可。注意:需要授权用户对目标路径有写入权限,我这里将/data/sftp目录权限设置为777了,之前一直提示无法上传文件,改了权限就正常了
SFTP配置
SFTP是要在每一台linux服务器上进行配置的,你要登录哪台机器,需要上传文件到该机器上,就需要配置SFTP,配置过程如下:
groupadd sftp useradd -g sftp -s /sbin/nologin -M sftp
设置密码:
passwd sftp
创建sftp根目录,即存放文件的目录
mkdir -p /data/sftp chown root:sftp /data/sftp chmod 770 /data/sftp
修改sshd_config配置
#Subsystem sftp /usr/libexec/openssh/sftp-server // 注释这一条配置,
新增以下配置
Subsystem sftp internal-sftp Match User sftp X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp ChrootDirectory /data/sftp
vsftpd配置
windows服务器可以使用vsftpd来上传下载文件
生产环境vsftpd配置文件如下:
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES listen_ipv6=NO pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES chroot_local_user=YES ascii_upload_enable=YES ascii_download_enable=YES async_abor_enable=YES local_root=/var/ftp/ops anon_root=/var/ftp
生产环境中的ftp禁止了匿名登录,只能让运维人员使用ops账号登录
[root@SRV-OPS10-JUMP02 ~]# ll /var/ftp/ total 0 drwxr-xr-x 3 root root 19 May 2 11:18 ops drwxr-xr-x 2 root root 6 Aug 3 2017 pub [root@SRV-OPS10-JUMP02 ~]# ll /var/ftp/ops/ total 0 drwxr-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=YES anonymous_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES allow_writeable_chroot=YES chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list local_root=/var/ftp anon_root=/var/ftp/pub
补充
在生产中发现ssh协议连接linux机器,会出现乱码的情况。这是因为guacamole机器字体不对,可以从windows机器下载黑体和宋体字到linux机器上。
具体操作方法请参考
https://www.linuxidc.com/Linux/2016-09/135548.htm
如果想更换ssh登陆后的字体和颜色,可以在ssh配置中加上color-scheme 参数配置,可选参数:black-white、gray-black、green-black、white-black
例如:
ssh 10.9.186.188 22 ansible poKh8gwRmla4e" white-black