Làm cho người dùng nhắc FreeRDP cho tên người dùng và mật khẩu?


13

Hiện tại, tôi đang sử dụng lệnh sau để bắt đầu phiên FreeRDP:

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

Hoạt động tốt. Tuy nhiên, tôi không muốn mật khẩu nằm trong dòng lệnh như thế. Vì vậy, tôi đã thử nó mà không cần mật khẩu:

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

Và tôi nhận được một thông báo lỗi kết nối thay vì một loại hộp thoại hoặc lời nhắc yêu cầu tôi nhập mật khẩu.

Có thể lấy điều này để nhắc người dùng nhập mật khẩu?


CẬP NHẬT: Bỏ qua công /ptắc

Không có công /ptắc, tôi nhận được như sau:

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

Bạn có phiên bản nào của xfreerdp? Trong Debian wheezy với freerdp-x11 1.0.1, theo như tôi có thể nói từ nguồn (Tôi không có máy chủ RDP nào tiện để kiểm tra), có một dấu nhắc mật khẩu.
Gilles 'SO- ngừng trở thành ác quỷ'

Tôi có phiên bản 1.2.0-beta1.
oshirowanen

2
Tại sao bạn đang sử dụng sudocái quái gì?
MikeyB

Câu trả lời:


14

Thủ thuật là đặt công tắc mật khẩu ở cuối dòng lệnh của bạn để bạn có thể để trống. Điều này sẽ kích hoạt xfreerdpđể nhắc mật khẩu của bạn thay vì phải cung cấp nó thông qua dòng lệnh.

Thí dụ

giao diện cli mới (v1.1 +)
$ xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com /p
giao diện cli cũ (v1.0.2)
$ xfreerdp -u oshiro -d company.com farm.company.com -t 3389 -p

LƯU Ý: CLI mới có sẵn trong các phiên bản tiền phát hành, v1.1 +, vì vậy hãy đặc biệt chú ý đến phiên bản bạn đang sử dụng. Chạy lệnh xfreerdp --versionsẽ chỉ cho bạn cái nào. Ngoài ra hãy xem chủ đề phát hành trong wiki để biết thêm thông tin về mỗi chủ đề.

Kết nối mẫu

Đây là một ví dụ về việc tôi kết nối với máy chủ RDP.

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

Nhắc người dùng

Vấn đề này trong trình theo dõi vấn đề FreeRDP có tiêu đề: Nhắc về Thông tin xác thực - NLA # 1512 , có đoạn trích này về cách bạn có thể sử dụng zenityđể nhắc người dùng nhập tên người dùng và mật khẩu bằng hộp thoại GUI và sau đó chạy xfreerdpvới thông tin được cung cấp.

$ 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

Ở trên khi thực hiện sẽ bật các hộp thoại này cho người dùng. Chúng sẽ lần lượt xuất hiện lần lượt.

                   ss # 1         ss # 2

Người giới thiệu


1
Cảm ơn vì điều đó. Tuy nhiên, khi tôi thử xfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com /p, nó chỉ cung cấp cho tôi tài liệu và tất cả các lệnh tôi có thể sử dụng. Sau đó, ngay sau khi tôi đặt mật khẩu sau khi pnó bắt đầu hoạt động.
oshirowanen

@oshirowanen - nếu bạn bỏ qua /ptất cả các công tắc?
slm

Lỗi quá dài để gửi bình luận, vì vậy tôi đã cập nhật câu hỏi ban đầu với thông báo lỗi.
oshirowanen

@oshirowanen - có vẻ như đó có thể là một lỗi: github.com/FreeRDP/FreeRDP/issues/1584 . Hiển thị đầu ra giống như của bạn. Tôi sẽ mở một vấn đề với FreeRDP, nếu bạn không chắc chắn cách thực hiện việc này, tôi có thể hỗ trợ thêm LMK.
slm

thay vì zenity --entry --text="Enter your _password:" --hide-textbạn có thể nói một cách đơn giảnzenity --password
user829755 11/05/2015

7

Tôi muốn mở rộng về giải pháp của slm . Tôi muốn có một cửa sổ duy nhất để nhập tất cả thông tin vào và cho phép tôi chỉ định tất cả RemoteApp trong một lần, vì vậy tôi đã xây dựng dựa trên những gì anh ấy đề xuất với sự thoải mái và tạo ra điều này.

Nhắc nhở XFreeRDP

XFreeRDP-Nhắc

Mã số:

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

Đặc trưng:

  • Mặc định cho cổng 3389 nếu không được điền
  • Mặc định không có Ứng dụng từ xa nếu không được điền

Dự định:

  • Cảnh báo chứng chỉ bảo mật
  • Truy vấn RDWeb để cung cấp Danh sách tài nguyên

Tôi sử dụng điều này trên máy tính xách tay #! ++ của mình rất thành công để kết nối với công ty của tôi và VM Remote Apps và máy chủ máy khách. Tôi không có kinh nghiệm về kịch bản, vì vậy nếu bất cứ ai có bất kỳ đề xuất hoặc phản hồi nào, tôi rất thích nghe họ.


3

Nếu bạn chỉ định bảo mật tls, máy tính từ xa sẽ nhắc nhập mật khẩu:

Xfreerdp --sec tls

Định dạng tham số mới:

  /sec:tls

1

Bạn cần cung cấp một tham số trống (không có giá trị mật khẩu). Thử đi:

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

Nếu điều đó không hiệu quả, thì bạn có thể thực hiện điều này với tập lệnh bash đơn giản.

Lưu cái này dưới dạng 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

Sau đó thực hiện tập tin thực thi:

chmod +x rdp.sh

Khởi chạy nó:

./rdp.sh

Điều này đã được hỏi và thảo luận kỹ hơn về vấn đề github của xfreerdp: https://github.com/FreeRDP/FreeRDP/issues/1353

Ý tưởng tập lệnh bash được lấy từ: /programming/3980668/how-to-get-a-password-from-a-shell-script-without-echiến


Điều này lộ mật khẩu cho người dùng đang làm ps -ef.
Revierpost

1

Tôi cũng thích yad, sử dụng kịch bản shell sau đây.

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

Nó cung cấp một giao diện tốt và ẩn mật khẩu.

nhập mô tả hình ảnh ở đây


0

Bạn cũng có thể sử dụng --from-stdin. Sau đó, bạn sẽ được nhắc cho bất kỳ giá trị cần thiết nào không được cung cấp.

Tôi thích giải pháp Jarretts nhưng với yad không phải sự thoải mái, nó cho phép bạn thực hiện các hộp tổ hợp:

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" "")
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.