Rendi utente FreeRDP richiesto per nome utente e password?


13

Al momento, sto usando il seguente comando per avviare una sessione FreeRDP:

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

Funziona bene. Tuttavia, non voglio che la password si trovi nella riga di comando in questo modo. Quindi l'ho provato senza la password:

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

E ho ricevuto un messaggio di errore di connessione invece di una sorta di finestra di dialogo o prompt che mi chiedeva di inserire una password.

È possibile ottenere questo per richiedere all'utente una password?


AGGIORNAMENTO: omissione /pdell'interruttore

Senza l' /pinterruttore, ottengo quanto segue:

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

Quale versione di xfreerdp hai? In Debian wheezy con freerdp-x11 1.0.1, per quanto ne so dalla fonte (non ho un server RDP utile da controllare), c'è una richiesta di password.
Gilles 'SO-smetti di essere malvagio' il

Ho la versione 1.2.0-beta1.
oshirowanen,

2
Perché diamine stai usando sudo?
MikeyB,

Risposte:


14

Il trucco è mettere l'interruttore della password alla fine della riga di comando in modo da poterlo lasciare vuoto. Ciò attiverà xfreerdpper richiedere la password invece di doverla fornire tramite la riga di comando.

Esempio

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

NOTA: la nuova CLI è disponibile nelle versioni preliminari, v1.1 +, quindi presta particolare attenzione alla versione che stai utilizzando. L'esecuzione del comando xfreerdp --versionti mostrerà quale. Dai anche un'occhiata all'argomento delle versioni nel wiki per maggiori informazioni su ciascuna.

Connessione di esempio

Ecco un esempio di me che mi connetto a un server RDP.

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

Richiesta all'utente

Questo problema nel tracker dei problemi di FreeRDP intitolato: Richiedi credenziali - NLA # 1512 , aveva questo frammento di come si poteva usare zenityper richiedere all'utente un nome utente e una password usando le finestre di dialogo della GUI e quindi eseguire xfreerdpcon le informazioni fornite in seguito.

$ 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

Quanto sopra, quando eseguito, farà apparire queste finestre di dialogo all'utente. Questi verranno uno alla volta a turno.

                   SS # 1         ss # 2

Riferimenti


1
Grazie per questo. Tuttavia, quando provo xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com /p, mi dà solo la documentazione e tutti i comandi che potrei usare. Quindi non appena inserisco la password dopo pche inizia a funzionare.
oshirowanen,

@oshirowanen - se si omette lo /pswitch tutti insieme?
slm

L'errore è stato troppo lungo per essere pubblicato come commento, quindi ho aggiornato la domanda originale con il messaggio di errore.
oshirowanen,

@oshirowanen - sembra che potrebbe essere un bug: github.com/FreeRDP/FreeRDP/issues/1584 . Mostra lo stesso output del tuo. Vorrei aprire un problema con FreeRDP, se non sei sicuro di come fare questo posso aiutare ulteriormente LMK.
slm

invece di zenity --entry --text="Enter your _password:" --hide-textte puoi semplicemente direzenity --password
user829755,

7

Vorrei ampliare la soluzione di slm . Volevo che un'unica finestra inserisse tutte le informazioni e mi permettesse di specificare una RemoteApp tutto in una volta, quindi ho costruito su ciò che ha suggerito con zenità e creato questo.

Richiesta XFreeRDP

XFreeRDP-Prompt

Codice:

#!/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=""

Caratteristiche:

  • L'impostazione predefinita è la porta 3389 se non viene popolata
  • L'impostazione predefinita è Nessuna app remota se non popolata

previsto:

  • Avviso relativo al certificato di sicurezza
  • Query RDWeb per fornire l'elenco delle risorse

Lo uso sul mio laptop #! ++ con grande successo per la connessione alla mia azienda, alle App remote VM e ai server client. Non ho esperienza con gli script, quindi se qualcuno ha qualche suggerimento o feedback, mi piacerebbe ascoltarli.


3

Se si specifica tls security, il computer remoto richiederà la password:

Xfreerdp --sec tls

Il nuovo formato dei parametri:

  /sec:tls

1

Devi fornire un parametro vuoto (senza valore password). Prova questo:

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

Se ciò non funziona, allora puoi farlo con un semplice script bash.

Salva come 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

Quindi rendere eseguibile il file:

chmod +x rdp.sh

Lanciarlo:

./rdp.sh

Questo è stato chiesto e discusso in modo più approfondito sulla questione github di xfreerdp: https://github.com/FreeRDP/FreeRDP/issues/1358

L'idea di script bash è tratta da: /programming/3980668/how-to-get-a-password-from-a-shell-script-without-echoing


Questo espone la password agli utenti ps -ef.
reinierpost,

1

Mi piace anche yad, usando il seguente script di shell.

#!/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

Fornisce una buona interfaccia e nasconde la password.

inserisci qui la descrizione dell'immagine


0

Puoi usare anche --from-stdin. Quindi ti verranno richiesti tutti i valori necessari che non sono stati forniti.

Mi è piaciuta la soluzione Jarretts ma con yad non zenity, ti permette di fare caselle combinate:

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" "")
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.