กำหนดให้ผู้ใช้ 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

และฉันได้รับข้อความแจ้งความล้มเหลวในการเชื่อมต่อแทนที่จะเป็นกล่องโต้ตอบหรือขอให้ฉันใส่รหัสผ่าน

เป็นไปได้ที่จะได้รับแจ้งให้ผู้ใช้รหัสผ่านหรือไม่


UPDATE: ไม่ใช้/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 สะดวกในการตรวจสอบ) มีพรอมต์รหัสผ่าน
Gilles 'ดังนั้นหยุดความชั่วร้าย'

ฉันมีรุ่น 1.2.0-beta1
oshirowanen

2
ทำไม heck ที่คุณใช้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 ที่ชื่อว่า: Prompt for Credentials - 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

ข้างต้นเมื่อดำเนินการจะปรากฏกล่องโต้ตอบเหล่านี้ถึงผู้ใช้ สิ่งเหล่านี้จะเกิดขึ้นทีละครั้ง

                   เอสเอส # 1         เอสเอส # 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/issues/1584 แสดงเอาต์พุตเดียวกันกับของคุณ ฉันจะเปิดปัญหากับ FreeRDP ถ้าคุณไม่แน่ใจว่าจะทำอย่างไรฉันสามารถช่วย LMK เพิ่มเติมได้
slm

แทนที่จะzenity --entry --text="Enter your _password:" --hide-textบอกว่าคุณสามารถพูดได้zenity --password
user829755

7

ฉันต้องการที่จะขยายตัวในSLM ของ การแก้ปัญหา ฉันต้องการหน้าต่างเดียวเพื่อป้อนข้อมูลทั้งหมดและอนุญาตให้ฉันระบุ RemoteApp ได้ในครั้งเดียวดังนั้นฉันจึงสร้างสิ่งที่เขาแนะนำด้วยความเป็นเซนและสร้างสิ่งนี้

XFreeRDP พรอมต์

XFreeRDP-Prompt

รหัส:

#!/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 Remote Apps และไคลเอนต์เซิร์ฟเวอร์ ฉันไม่ได้มีประสบการณ์กับการเขียนสคริปต์ดังนั้นหากใครมีคำแนะนำหรือข้อเสนอแนะใด ๆ ฉันก็อยากจะได้ยินพวกเขา


3

หากคุณระบุความปลอดภัยของ tls คอมพิวเตอร์ระยะไกลจะถามรหัสผ่าน:

Xfreerdp --sec tls

รูปแบบพารามิเตอร์ใหม่:

  /sec:tls

1

คุณต้องระบุพารามิเตอร์เปล่า (โดยไม่มีค่ารหัสผ่าน) ลองสิ่งนี้:

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

หากวิธีนี้ใช้ไม่ได้ผลคุณสามารถทำสิ่งนี้ได้ด้วยสคริปต์ทุบตีแบบง่าย

บันทึกเป็น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

สิ่งนี้ถูกถามและพูดคุยอย่างละเอียดมากขึ้นเกี่ยวกับปัญหา gitub ของ xfreerdp: https://github.com/FreeRDP/FreeRDP/issues/1358

แนวคิดสคริปต์ bash นำมาจาก: /programming/3980668/how-to-get-a-password-from-a-shell-script-without-echoing


นี้ exposes 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" "")
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.