FreeRDP-Eingabeaufforderungsbenutzer für Benutzername und Passwort festlegen?


13

Im Moment verwende ich den folgenden Befehl, um eine FreeRDP-Sitzung zu starten:

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

Funktioniert gut. Ich möchte jedoch nicht, dass sich das Passwort so in der Befehlszeile befindet. Also habe ich es ohne Passwort versucht:

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

Und ich habe eine Verbindungsfehlermeldung anstelle eines Dialogfelds oder einer Aufforderung erhalten, in der ich aufgefordert werde, ein Kennwort einzugeben.

Ist es möglich, dass der Benutzer zur Eingabe eines Kennworts aufgefordert wird?


UPDATE: Den /pSchalter weglassen

Ohne den /pSchalter bekomme ich folgendes:

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

Welche Version von xfreerdp hast du? In Debian wheezy mit freerdp-x11 1.0.1 gibt es, soweit ich aus der Quelle ersehen kann (ich habe keinen RDP-Server zur Überprüfung), eine Passwortabfrage.
Gilles 'SO - hör auf böse zu sein'

Ich habe Version 1.2.0-beta1.
oshirowanen

2
Warum zum Teufel benutzt du sudo?
MikeyB

Antworten:


14

Der Trick besteht darin, den Passwortschalter am Ende Ihrer Befehlszeile zu platzieren, damit Sie ihn leer lassen können. Dadurch werden Sie xfreerdpaufgefordert, das Kennwort einzugeben, anstatt es über die Befehlszeile eingeben zu müssen.

Beispiel

neue CLI-Schnittstelle (v1.1 +)
$ xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com /p
alte CLI-Schnittstelle (v1.0.2)
$ xfreerdp -u oshiro -d company.com farm.company.com -t 3389 -p

HINWEIS: Die neue CLI ist in den Vorabversionen v1.1 + verfügbar. Achten Sie daher besonders darauf, welche Version Sie verwenden. Wenn Sie den Befehl xfreerdp --versionausführen, wird angezeigt, welche. Werfen Sie auch einen Blick auf die Veröffentlichungen Thema im Wiki für weitere Informationen zu den einzelnen.

Beispielverbindung

Hier ist ein Beispiel für eine Verbindung mit einem RDP-Server.

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

Benutzer auffordern

Dieses Problem im FreeRDP-Issue-Tracker mit dem Titel: Aufforderung zur Eingabe von Anmeldeinformationen - NLA # 1512 enthielt diesen Ausschnitt, wie Sie zenityden Benutzer mithilfe von GUI-Dialogen zur Eingabe eines Benutzernamens und eines Kennworts auffordern und anschließend xfreerdpmit den bereitgestellten Informationen ausführen können .

$ 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

Wenn das oben Gesagte ausgeführt wird, werden diese Dialogfelder dem Benutzer angezeigt. Diese werden nacheinander angezeigt.

                   ss # 1         ss # 2

Verweise


1
Danke dafür. Wenn ich es jedoch versuche xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com /p, bekomme ich nur die Dokumentation und alle Befehle, die ich verwenden könnte. Sobald ich das Passwort peingegeben habe, funktioniert es.
oshirowanen

@oshirowanen - wenn Sie den /pSchalter alle zusammen weglassen ?
slm

Der Fehler war zu lang, um als Kommentar veröffentlicht zu werden, daher habe ich die ursprüngliche Frage mit der Fehlermeldung aktualisiert.
oshirowanen

@oshirowanen - das scheint ein Fehler zu sein: github.com/FreeRDP/FreeRDP/issues/1584 . Zeigt die gleiche Ausgabe wie Ihre. Ich würde ein Problem mit FreeRDP eröffnen. Wenn Sie sich nicht sicher sind, wie Sie dies tun sollen, kann ich weitere LMK unterstützen.
slm

stattdessen zenity --entry --text="Enter your _password:" --hide-textkönnen Sie einfach sagenzenity --password
user829755

7

Ich möchte die Lösung von slm erweitern . Ich wollte, dass in einem einzigen Fenster alle Informationen eingegeben werden und ich eine RemoteApp auf einmal angeben kann. Deshalb habe ich auf dem aufgebaut, was er mit Zenity vorgeschlagen hat, und dies erstellt.

XFreeRDP-Eingabeaufforderung

XFreeRDP-Eingabeaufforderung

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=""

Eigenschaften:

  • Der Standardwert ist Port 3389, wenn er nicht ausgefüllt ist
  • Standardmäßig keine Remote-App, wenn sie nicht ausgefüllt ist

Geplant:

  • Warnung zum Sicherheitszertifikat
  • RDWeb-Abfrage zur Bereitstellung der Ressourcenliste

Ich verwende dies auf meinem #! ++ - Laptop mit großem Erfolg, um eine Verbindung zu meinem Unternehmen und VM Remote Apps und Client-Servern herzustellen. Ich habe keine Erfahrung mit Skripten. Wenn also jemand Vorschläge oder Feedback hat, würde ich sie gerne hören.


3

Wenn Sie tls security angeben, fordert der Remotecomputer zur Eingabe des Kennworts auf:

Xfreerdp --sec tls

Das neue Parameterformat:

  /sec:tls

1

Sie müssen einen leeren Parameter angeben (ohne Kennwortwert). Versuche dies:

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

Wenn dies nicht funktioniert, können Sie dies mit einem einfachen Bash-Skript erreichen.

Speichern Sie dies als 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

Dann machen Sie die Datei ausführbar:

chmod +x rdp.sh

Starten Sie es:

./rdp.sh

Dies wurde in Bezug auf das Github-Problem von xfreerdp eingehender erörtert und diskutiert: https://github.com/FreeRDP/FreeRDP/issues/1358

Die Idee für das Bash-Skript stammt von: /programming/3980668/how-to-get-a-password-from-a-shell-script-without-echoing


Dadurch wird das Kennwort den Benutzern zur Verfügung gestellt ps -ef.
Reinierpost

1

Ich mag yad auch mit dem folgenden Shell-Skript.

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

Es bietet eine gute Oberfläche und verbirgt das Passwort.

Geben Sie hier die Bildbeschreibung ein


0

Sie können auch --from-stdin verwenden. Anschließend werden Sie aufgefordert, die erforderlichen Werte einzugeben, die nicht angegeben wurden.

Ich mochte die Jarretts-Lösung, aber mit yad not zenity können Sie Kombinationsfelder erstellen:

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" "")
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.