Зробити FreeRDP швидкого користувача для ім’я користувача та пароля?


13

На даний момент я використовую таку команду для початку сесії FreeRDP:

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

Добре працює. Однак я не хочу, щоб пароль знаходився в такому командному рядку. Тому я спробував це без пароля:

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

І мені надійшло повідомлення про помилку підключення замість якогось діалогового вікна або підказки з проханням ввести пароль.

Чи можна отримати це, щоб запросити користувача на пароль?


ОНОВЛЕННЯ: Опускання /pперемикача

Без /pвимикача я отримую наступне:

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

Яку версію xfreerdp у вас є? У Debian wheezy з freerdp-x11 1.0.1, наскільки я можу сказати з джерела (у мене немає зручного сервера RDP для перевірки), є запит на пароль.
Жил "ТАК - перестань бути злим"

У мене версія 1.2.0-beta1.
oshirowanen

2
Чому чорт ви використовуєте sudo?
MikeyB

Відповіді:


14

Хитрість полягає в тому, щоб встановити перемикач паролів у кінці вашого командного рядка, щоб ви могли залишити його порожнім. Це призведе xfreerdpдо запрошення пароля замість того, щоб вводити його через командний рядок.

Приклад

новий інтерфейс cli (v1.1 +)
$ xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com /p
старий інтерфейс cli (v1.0.2)
$ xfreerdp -u oshiro -d company.com farm.company.com -t 3389 -p

ПРИМІТКА . Новий CLI доступний у попередніх випусках, v1.1 +, тому зверніть особливу увагу, яку версію ви використовуєте. Запуск команди xfreerdp --versionпокаже, яка саме. Також подивіться тему випусків у вікі, щоб отримати докладнішу інформацію про кожен.

Зразок з'єднання

Ось приклад підключення до сервера RDP.

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

Спонукання користувача

У цій проблемі в трекері випуску FreeRDP під назвою: Підказка для облікових даних - NLA № 1512 був цей фрагмент того, як ви можете zenityзапропонувати користувачеві отримати ім'я користувача та пароль за допомогою діалогових вікон GUI, а потім запустити xfreerdpз наданою інформацією згодом.

$ 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

Вищезазначене, коли буде виконано, відобразить ці діалоги до користувача. Вони з'являться по черзі по черзі.

                   ss №1         ss №2

Список літератури


1
Дякую за це Однак, коли я намагаюся xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com /p, він просто дає мені документацію та всі команди, які я міг би використати. Потім, як тільки я ставлю пароль після того, як pвін почне працювати.
oshirowanen

@oshirowanen - якщо пропустити /pперемикач всі разом?
slm

Помилка була занадто довгою, щоб залишити коментар, тому я оновив оригінальне запитання із повідомленням про помилку.
oshirowanen

@oshirowanen - схоже, це може бути помилка: github.com/FreeRDP/FreeRDP/isissue/1584 . Показує такий же вихід, як і ваш. Я б відкрив проблему з FreeRDP, якщо ви не впевнені, як це зробити, я можу допомогти в подальшому LMK.
slm

замість zenity --entry --text="Enter your _password:" --hide-textвас можна просто сказатиzenity --password
user829755

7

Я хотів би розширити ОДС в розчині . Я хотів, щоб в одне вікно було введено всю інформацію, і я дозволив мені вказати RemoteApp все за один раз, тому я будував із того, що він запропонував із сумлінністю, і створив це.

Підказка XFreeRDP

XFreeRDP-Підказка

Код:

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

Особливості:

  • За замовчуванням порт 3389, якщо він не заповнений
  • За замовчуванням немає віддаленого додатка, якщо він не заповнений

Заплановано:

  • Попередження про сертифікат безпеки
  • Запит RDWeb для надання списку ресурсів

Я використовую це на своєму ноутбуці #! ++ з великим успіхом для підключення до моєї компанії та віддалених додатків VM та серверів клієнтів. Я не маю досвіду сценаріїв, тому, якщо хтось має якісь пропозиції чи відгуки, я б хотів їх почути.


3

Якщо ви вкажете безпеку tls, віддалений комп'ютер запропонує ввести пароль:

Xfreerdp --sec tls

Формат нового параметра:

  /sec:tls

1

Потрібно ввести порожній параметр (без значення пароля). Спробуйте це:

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

Якщо це не працює, ви можете це зробити за допомогою простого сценарію bash.

Збережіть це як 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

Потім зробіть файл виконуваним:

chmod +x rdp.sh

Запустіть його:

./rdp.sh

Це було запитано та обговорено більш детально у випуску github xfreerdp: https://github.com/FreeRDP/FreeRDP/isissue/1358

Ідея сценарію bash взята з: /programming/3980668/how-to-get-a-password-from-a-shell-script-without-echoing


Це відкриває пароль для користувачів ps -ef.
reinierpost

1

Мені також подобається yad, використовуючи наступний скрипт оболонки.

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

Він забезпечує хороший інтерфейс і приховує пароль.

введіть тут опис зображення


0

Ви також можете використовувати --from-stdin. Тоді вам буде запропоновано будь-які необхідні значення, які не були надані.

Мені сподобалося рішення Jarretts, але з ядом не зен, це дозволяє робити комбіновані коробки:

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" "")
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.