guacamole安裝配置

系統環境: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


image.png


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

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 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-whitegray-blackgreen-blackwhite-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&quot;</param>
      <param name="color-scheme">white-black</param>
</connection>
相關文章
相關標籤/搜索