guacamole免密登录,guacamole不通过登录界面登录,guacamole指定用户名免密登录

Posted sddhome

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了guacamole免密登录,guacamole不通过登录界面登录,guacamole指定用户名免密登录相关的知识,希望对你有一定的参考价值。

第一步,获取指定用户token

通过POST接口: http://localhost:9090/guacamole/api/tokens

参数1:username

参数2:password

返回:authToken

JAVA代码调用如下:

public String generateToken(String userName) 
        HttpHeaders headers = getHttpHeaders(MediaType.APPLICATION_FORM_URLENCODED);

        MultiValueMap<String, String> forms = new LinkedMultiValueMap<String, String>();
        forms.put("username", Collections.singletonList(userName));
        forms.put("password", Collections.singletonList(globalConfig.getGuacPassword()));

        HttpEntity<MultiValueMap<String, String>> httpEntity = new HttpEntity<MultiValueMap<String, String>>(forms, headers);
        String body = restTemplateConfig.restTemplate().postForObject(globalConfig.getGuacamoleUrl() + "/api/tokens", httpEntity, String.class);
        JSONObject responseBody = JSONObject.parseObject(body);
        return responseBody.getString("authToken");
    

第二步,带上token请求,访问生成的guacamole url 即可。

浏览器访问:http://localhost:9090/guacamole/#/client/MjgAYwBteXNxbA?token=C08E3DC80A4E04D3747E8EB5C8D379E1EF6E70E9FC43F0E722FFD39B6B1154E7

结果如图:

 

guacamole JAVA工具类:

 https://files.cnblogs.com/files/sdd53home/HttpMethodForGuacamole.zip?t=1681291274

guacamole安装配置

系统环境:

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


下载安装包:

下载地址:https://guacamole.apache.org/releases/0.9.14/


技术分享图片


guacamole-server安装

tar zxf guacamole-client-0.9.14.tar.gz -C /opt

cd /opt/guacamole-server-0.9.14/

./configure --with-init-dir=/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


写一个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



 创建授权文件 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 sftp:sftp /data/sftp
chmod 777 /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








以上是关于guacamole免密登录,guacamole不通过登录界面登录,guacamole指定用户名免密登录的主要内容,如果未能解决你的问题,请参考以下文章

鳄梨酱突然停止工作; guacamole.properties 的问题

在CentOS上安装和配置Guacamole

Guacamole搭建,一个基于HTML5的远程桌面

Guacamole搭建,一个基于HTML5的远程桌面

沙箱-guacamole

guacamole部署