系統環境:java
CentOS7.2 + Tomcat8.5 + JDK18 + guacamole-server0.9.14linux
安裝必要環境:
nginx
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
安裝依賴包web
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 ##不安裝剪切板不能用
下載安裝包:
apache
下載地址:https://guacamole.apache.org/releases/0.9.14/ vim
guacamole-server安裝windows
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服務
tomcat
# /etc/init.d/guacd start Starting guacd: SUCCESS
安裝guacamole clientbash
一、首先安裝jdk 和tomcat,安裝過程省略服務器
二、安裝client
mv guacamole-0.9.14.war /usr/local/tomcat/webapps
三、修改tomcat server.xml配置
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="/" docBase="guacamole" debug="0" privileged="true" reloadable="true"/>
四、啓動tomcat
/etc/init.d/tomcat start
五、使用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
<user-mapping> <authorize password="123456" username="admin"> <connection name="SRV-OP10-CS01"> <protocol>rdp</protocol> <param name="hostname">172.16.0.10</param> <param name="port">13040</param> <param name="username">administrator</param> <param name="password">6bcr"ZqK*LgD;a</param> </connection> <connection name="SRV-OPS01-LINTEST02"> <protocol>ssh</protocol> <param name="hostname">172.16.2.14</param> <param name="port">22</param> <param name="username">cpzeng</param> <param name="password">Dtihsvkr/Sp8gd4rz</param> <param name="enable-sftp">true</param> <param name="sftp-hostname">127.0.0.1</param> <param name="sftp-root-directory">/data/sftp</param> <param name="sftp-username">sftp</param> <param name="sftp-password">123</param> </connection> <connection name="SRV-OPS01-LINTEST01"> <protocol>ssh</protocol> <param name="hostname">172.16.2.3</param> <param name="port">22</param> <param name="username">cpzeng</param> <param name="password">Dtihsvkr/Sp8gd4rz</param> <param name="enable-sftp">true</param> <param name="sftp-hostname">127.0.0.1</param> <param name="sftp-root-directory">/data/sftp</param> <param name="sftp-username">sftp</param> <param name="sftp-password">123</param> </connection> </authorize> </user-mapping>
每個用戶都有一個獨立<authorize></authorize>配置段包起來,還可使用md5加密的密碼
使用明文密碼 <authorize password="123456" username="admin"> </authorize> 使用加密的密碼 <authorize sername="USERNAME2" password="319f4d26e3c536b5dd871bb2c52e3178" encoding="md5"> </authorize>
要遠程鏈接的主機用<connection></connection>配置段包起來
<connection name="SRV-OPS01-LINTEST02"> <protocol>ssh</protocol> <param name="hostname">172.16.2.14</param> <param name="port">22</param> <param name="username">cpzeng</param> <param name="password">Dtihsvkr/Sp8gd4rz</param> <param name="enable-sftp">true</param> <param name="sftp-hostname">127.0.0.1</param> <param name="sftp-root-directory">/data/sftp</param> <param name="sftp-username">sftp</param> <param name="sftp-password">123</param> </connection>
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文件中<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 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
例如:
<connection name="SRV-CPMS03-MQ01"> <protocol>ssh</protocol> <param name="hostname">10.9.186.188</param> <param name="port">22</param> <param name="username">ansible</param> <param name="password">poKh8gwRmla4e"</param> <param name="color-scheme">white-black</param> </connection>