系统环境:
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 ##不安装剪切板不能用
下载安装包:
下载地址:
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;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
每一个用户都有一个独立<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控制台
这里的账号密码使用/etc/guacamole/user-mapping.xml文件中<authorize></authorize>配置段中的username和password
如上面例子中账号密码为admin/123456,注意<connection></connection>中的username和password是服务器的账户密码
登录后选择要远程连接的机器
上传文件
同时按住control + alt + shift
在Devices标签下点击配置sftp路径(/data/sftp),点击Upload Files按钮,在弹出的窗口选择要上传的文件即可。注意:需要授权用户对目标路径有写入权限,我这里将/data/sftp目录权限设置为777了,之前一直提示无法上传文件,改了权限就正常了
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-white、gray-black、green-black、white-black
例如:
ssh 10.9.186.188 22 ansible poKh8gwRmla4e" white-black