Buat FreeRDP meminta pengguna untuk nama pengguna dan kata sandi?

13

Saat ini, saya menggunakan perintah berikut untuk memulai sesi FreeRDP:

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

Bekerja dengan baik. Namun, saya tidak ingin kata sandi berada di baris perintah seperti itu. Jadi saya mencobanya tanpa kata sandi:

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

Dan saya mendapat pesan kegagalan koneksi alih-alih semacam kotak dialog atau meminta saya untuk memasukkan kata sandi.

Apakah mungkin mendapatkan ini untuk meminta kata sandi bagi pengguna?


PEMBARUAN: Menghilangkan /psakelar

Tanpa /psaklar, saya mendapatkan yang berikut:

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
oshirowanen
sumber
Versi xfreerdp apa yang Anda miliki? Dalam Debian wheezy dengan freerdp-x11 1.0.1, sejauh yang saya tahu dari sumbernya (saya tidak punya server RDP yang berguna untuk memeriksa), ada prompt kata sandi.
Gilles 'SO- stop being evil'
Saya memiliki versi 1.2.0-beta1.
oshirowanen
2
Kenapa sih yang kamu gunakan sudo?
MikeyB

Jawaban:

14

Caranya adalah dengan meletakkan sakelar kata sandi di akhir baris perintah Anda sehingga Anda dapat membiarkannya kosong. Ini akan memicu xfreerdpuntuk meminta kata sandi Anda alih-alih harus menyediakannya melalui baris perintah.

Contoh

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

CATATAN: CLI baru tersedia di pra-rilis, v1.1 +, jadi perhatikan versi mana yang Anda gunakan. Menjalankan perintah xfreerdp --versionakan menunjukkan kepada Anda yang mana. Lihat juga topik rilis di wiki untuk informasi lebih lanjut tentang masing-masing.

Koneksi sampel

Berikut ini adalah contoh saya terhubung ke server RDP.

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

Meminta pengguna

Masalah ini dalam pelacak masalah FreeRDP berjudul: Prompt for Credentials - NLA # 1512 , memiliki potongan ini tentang bagaimana Anda dapat menggunakan zenityuntuk meminta pengguna untuk nama pengguna dan kata sandi menggunakan dialog GUI dan kemudian jalankan xfreerdpdengan info yang diberikan sesudahnya.

$ 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

Di atas ketika dieksekusi akan memunculkan dialog ini ke pengguna. Ini akan muncul satu per satu secara bergantian.

                   ss # 1         ss # 2

Referensi

slm
sumber
1
Terima kasih untuk ini. Namun, ketika saya mencoba xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com /p, itu hanya memberi saya dokumentasi dan semua perintah yang bisa saya gunakan. Kemudian segera setelah saya memasukkan kata sandi setelah kata sandi pmulai bekerja.
oshirowanen
@oshirowanen - jika Anda menghilangkan /psakelar secara bersamaan?
slm
Kesalahan terlalu panjang untuk dikirim sebagai komentar, jadi saya telah memperbarui pertanyaan awal dengan pesan kesalahan.
oshirowanen
@oshirowanen - sepertinya itu adalah bug: github.com/FreeRDP/FreeRDP/issues/1584 . Menampilkan output yang sama seperti milik Anda. Saya akan membuka masalah dengan FreeRDP, jika Anda tidak yakin bagaimana melakukan ini, saya dapat membantu LMK lebih lanjut.
slm
alih-alih zenity --entry --text="Enter your _password:" --hide-textAnda hanya bisa mengatakanzenity --password
user829755
7

Saya ingin memperluas solusi slm . Saya ingin satu jendela untuk memasukkan semua informasi dan memungkinkan saya untuk menentukan RemoteApp sekaligus, jadi saya membangun apa yang dia sarankan dengan zenity dan menciptakan ini.

Prompt XFreeRDP

XFreeRDP-Prompt

Kode:

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

Fitur:

  • Default ke port 3389 jika tidak diisi
  • Standarnya tidak ada Aplikasi Jarak Jauh jika tidak diisi

Berencana:

  • Peringatan Sertifikat Keamanan
  • RDWeb Query untuk memberikan Daftar Sumber Daya

Saya menggunakan ini di laptop #! ++ saya dengan sukses besar untuk menghubungkan ke perusahaan saya dan VM Remote Apps dan Server klien. Saya tidak berpengalaman dengan scripting, jadi jika ada yang punya saran atau umpan balik, saya akan senang mendengarnya.

Jarrett Higgins
sumber
3

Jika Anda menentukan keamanan tls, komputer jarak jauh akan meminta kata sandi:

Xfreerdp --sec tls

Format parameter baru:

  /sec:tls
Francisco Hernandez
sumber
1

Anda perlu menyediakan parameter kosong (tanpa nilai kata sandi). Coba ini:

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

Jika itu tidak berhasil, maka Anda bisa melakukannya dengan skrip bash sederhana.

Simpan ini sebagai 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

Kemudian buat file yang dapat dieksekusi:

chmod +x rdp.sh

Luncurkan:

./rdp.sh

Ini telah ditanyakan dan didiskusikan lebih lanjut tentang masalah github xfreerdp: https://github.com/FreeRDP/FreeRDP/issues/1358

Ide skrip bash diambil dari: /programming/3980668/how-to-get-a-password-from-a-shell-script-without-echoing

phoops
sumber
Ini memperlihatkan kata sandi yang dilakukan pengguna ps -ef.
reinierpost
1

Saya juga suka yad, menggunakan skrip shell berikut.

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

Ini menyediakan antarmuka yang baik, dan menyembunyikan kata sandi.

masukkan deskripsi gambar di sini

Murka
sumber
0

Anda dapat menggunakan --from-stdin juga. Maka Anda akan diminta untuk nilai-nilai yang dibutuhkan yang tidak disediakan.

Saya menyukai solusi Jarretts tetapi dengan tidak nyaman, itu memungkinkan Anda melakukan kotak kombo:

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" "")
havealoha
sumber