Faire l'utilisateur FreeRDP invite pour le nom d'utilisateur et le mot de passe?


13

Pour le moment, j'utilise la commande suivante pour démarrer une session FreeRDP:

$ sudo xfreerdp /v:farm.company.com /d:company.com \
    /u:oshiro /p:oshiro_password /g:rds.company.com

Fonctionne bien. Cependant, je ne veux pas que le mot de passe soit dans la ligne de commande comme ça. J'ai donc essayé sans mot de passe:

$ sudo xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com

Et j'ai reçu un message d'échec de connexion au lieu d'une sorte de boîte de dialogue ou d'invite me demandant de saisir un mot de passe.

Est-il possible d'obtenir ceci pour inviter l'utilisateur à saisir un mot de passe?


MISE À JOUR: Omettre le /pcommutateur

Sans le /pcommutateur, j'obtiens ce qui suit:

oshiro@ubuntu:~$ xfreerdp /v:farm.company.com /d:company.com -u:oshiro /g:rds.company.com
connected to rds.company.com:443
connected to rds.company.com:443
Could not open SAM file!
Could not open SAM file!
Could not open SAM file!
Could not open SAM file!
rts_connect error! Status Code: 401
HTTP/1.1 401 Unauthorized
Content-Type: text/plain
Server: Microsoft-IIS/7.5
WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
WWW-Authenticate: Basic realm="rds.company.com"
X-Powered-By: ASP.NET
Date: Sun, 23 Mar 2014 10:40:30 GMT +12
Content-Length: 13

rts_connect error!
rpc_connect failed!
Error: protocol security negotiation or connection failure

Quelle version de xfreerdp possédez-vous? Dans Debian Wheezy avec freerdp-x11 1.0.1, pour autant que je sache depuis la source (je n'ai pas de serveur RDP à portée de main), il y a une invite de mot de passe.
Gilles 'SO- arrête d'être méchant'

J'ai la version 1.2.0-beta1.
oshirowanen

2
Pourquoi diable utilisez-vous sudo?
MikeyB

Réponses:


14

L'astuce consiste à mettre le mot de passe à la fin de votre ligne de commande afin que vous puissiez le laisser vide. Cela se déclenchera xfreerdppour vous demander votre mot de passe au lieu d'avoir à le fournir via la ligne de commande.

Exemple

nouvelle interface cli (v1.1 +)
$ xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com /p
ancienne interface cli (v1.0.2)
$ xfreerdp -u oshiro -d company.com farm.company.com -t 3389 -p

REMARQUE: La nouvelle CLI est disponible dans les versions préliminaires, v1.1 +, alors faites particulièrement attention à la version que vous utilisez. L'exécution de la commande xfreerdp --versionvous montrera lequel. Jetez également un œil au sujet des versions dans le wiki pour plus d'informations sur chacune.

Exemple de connexion

Voici un exemple de ma connexion à un serveur RDP.

$ xfreerdp --ignore-certificate -u smingolelli -d mydom -t 5000 rdp.mydom.com -p
connected to rdp.mydom.com:5000
Password: 

Inviter l'utilisateur

Ce problème dans l'outil de suivi des problèmes FreeRDP intitulé: Invite for Credentials - NLA # 1512 , contenait cet extrait de la façon dont vous pourriez utiliser zenitypour inviter l'utilisateur à saisir un nom d'utilisateur et un mot de passe à l'aide des boîtes de dialogue GUI, puis à exécuter xfreerdpavec les informations fournies par la suite.

$ xfreerdp /v:yourRDSfarmFQDN \
/u:$(zenity \
--entry \
--title="Domain Username" \
--text="Enter your Username") \
/p:$(zenity \
--entry \
--title="Domain Password" \
--text="Enter your _password:" \
--hide-text) \
/d:yourdomainname \
/f \
/cert-ignore
+clipboard

Ce qui précède, une fois exécuté, affichera ces boîtes de dialogue à l'utilisateur. Celles-ci apparaîtront à tour de rôle.

                   SS # 1         SS # 2

Les références


1
Merci pour cela. Cependant, lorsque j'essaye xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com /p, cela me donne juste la documentation et toutes les commandes que je pourrais utiliser. Ensuite, dès que j'ai mis le mot de passe après pqu'il commence à fonctionner.
oshirowanen

@oshirowanen - si vous omettez l' /pinterrupteur tous ensemble?
slm

L'erreur était trop longue pour être publiée en tant que commentaire, j'ai donc mis à jour la question d'origine avec le message d'erreur.
oshirowanen

@oshirowanen - cela ressemble à un bug: github.com/FreeRDP/FreeRDP/issues/1584 . Affiche la même sortie que la vôtre. J'ouvrirais un problème avec FreeRDP, si vous ne savez pas comment faire, je peux aider LMK.
slm

au lieu de zenity --entry --text="Enter your _password:" --hide-textvous pouvez simplement direzenity --password
user829755

7

Je voudrais développer la solution de slm . Je voulais une seule fenêtre pour saisir toutes les informations et me permettre de spécifier une RemoteApp en une seule fois, alors j'ai construit sur ce qu'il a suggéré avec zénité et j'ai créé cela.

Invite XFreeRDP

XFreeRDP-Prompt

Code:

#!/bin/bash

# XFreeRDP RemoteApp W/ Prompt Script
# Version 0.3
# Description:
# XFreeRDP Remote App Script utilizing Zentity to populate variables
# Written by Jarrett Higgins 12-2015

OUTPUT=$(zenity --forms --title="Connection Information" \
    --text="Enter information about your Remote Connection" \
    --separator="," \
    --add-entry="Server" \
    --add-entry="Port (Default: 3389)" \
    --add-entry="Domain (Optional)" \
    --add-entry="Username" \
    --add-password="Password" \
    --add-entry="Remote App Name (Optional)")
OUTPUT_RESULTS=$?
if ((OUTPUT_RESULTS != 0)); then
    echo "something went wrong"
    exit 1
fi
Blank=""
Server=$(awk -F, '{print $1}' <<<$OUTPUT)
Port=$(awk -F, '{print $2}' <<<$OUTPUT)
if ["$Port" = "$Blank"]
then
    Port="3389"
else
    Port="$Port"
fi
Domain=$(awk -F, '{print $3}' <<<$OUTPUT)
Username=$(awk -F, '{print $4}' <<<$OUTPUT)
Password=$(awk -F, '{print $5}' <<<$OUTPUT)
App=$(awk -F, '{print $6}' <<<$OUTPUT)
if ["$App" = "$Blank"]
then
    App="$App"
    Title="$Server"
else
    AppName="$App"
    Title="$AppName on $Server"
    App="/app:||$App"
fi
#zenity --info --title="Information Return" --text="$Server $Port $Domain $Username $Password $App"
xfreerdp /t:"$Title" /v:$Server:$Port /d:$Domain /u:$Username /p:$Password $App /cert-ignore /workarea +clipboard
Password=""

Caractéristiques:

  • Par défaut au port 3389 s'il n'est pas rempli
  • Par défaut, aucune application distante si non renseignée

Prévu:

  • Avertissement de certificat de sécurité
  • Requête RDWeb pour fournir la liste des ressources

J'utilise cela sur mon ordinateur portable #! ++ avec beaucoup de succès pour me connecter à mon entreprise et à VM Remote Apps et aux serveurs clients. Je n'ai pas d'expérience avec les scripts, donc si quelqu'un a des suggestions ou des commentaires, j'aimerais les entendre.


3

Si vous spécifiez la sécurité tls, l'ordinateur distant vous demandera un mot de passe:

Xfreerdp --sec tls

Le nouveau format de paramètre:

  /sec:tls

1

Vous devez fournir un paramètre vide (sans valeur de mot de passe). Essaye ça:

sudo xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com /p

Si cela ne fonctionne pas, vous pouvez le faire avec un simple script bash.

Enregistrez-le sous rdp.sh:

#!/bin/bash
# Read Password
echo -n Password: 
read -s password
echo
# Run Command
sudo xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com /p:$password

Rendez ensuite le fichier exécutable:

chmod +x rdp.sh

Lancez-le:

./rdp.sh

Cela a été demandé et discuté plus en détail sur le problème github de xfreerdp: https://github.com/FreeRDP/FreeRDP/issues/1358

L'idée du script bash est tirée de: /programming/3980668/how-to-get-a-password-from-a-shell-script-without-echoing


Cela expose le mot de passe aux utilisateurs qui le font ps -ef.
reinierpost

1

J'aime aussi yad, en utilisant le script shell suivant.

#!/bin/sh
frmdata=$(yad --title "Connect to remote computer" --form --field="Remote computer" --field="Username" --field="Password:H" --field="Domain" --field="Gateway")
frmcomputer=$(echo $frmdata | awk 'BEGIN {FS="|" } { print $1 }')
frmusername=$(echo $frmdata | awk 'BEGIN {FS="|" } { print $2 }')
frmpassword=$(echo $frmdata | awk 'BEGIN {FS="|" } { print $3 }')
frmdomain=$(echo $frmdata | awk 'BEGIN {FS="|" } { print $4 }')
frmgateway=$(echo $frmdata | awk 'BEGIN {FS="|" } { print $5 }')
xfreerdp /v:$frmcomputer /f /d:$frmdomain /u:$frmusername /g:$frmgateway /p:$frmpassword /cert-ignore

Il fournit une bonne interface et cache le mot de passe.

entrez la description de l'image ici


0

Vous pouvez également utiliser --from-stdin. Ensuite, vous serez invité à saisir toutes les valeurs nécessaires qui n'ont pas été fournies.

J'ai aimé la solution Jarretts mais avec yad not zenity, ça vous permet de faire des combos:

OUTPUT=$(yad --center --button="gtk-ok:0" --title "Remote Desktop" --form \
--field="Server:CB" "rds1.domain.local\!rds2.domain.local\!rds3.domain.local" \
--field="Port" "3389" \
--field="Domain" "DOMAIN.local" \
--field="Username" "" \
--field="Password:H" \
--field="Remote App Name" "")
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.