사용자 이름과 비밀번호를 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 버전이 있습니까? freerdp-x11 1.0.1의 데비안 wheezy에는 소스에서 알 수있는 한 (확인하기 편리한 RDP 서버가 없음) 비밀번호 프롬프트가 있습니다.
Gilles 'SO- 악한 중지'

버전 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: 

사용자에게 프롬프트

자격 증명 프롬프트 -NLA # 1512 라는 FreeRDP 문제 추적기의이 문제 에는 zenityGUI 대화 상자를 사용하여 사용자에게 사용자 이름과 비밀번호를 묻는 메시지를 표시 한 다음 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/issues/1584 . 당신과 동일한 출력을 보여줍니다. FreeRDP에 문제가있을 것입니다. 어떻게해야할지 모르겠다면 추가 LMK를 지원할 수 있습니다.
slm

대신에 zenity --entry --text="Enter your _password:" --hide-text간단하게 말할 수 있습니다zenity --password
user829755

7

slm의 솔루션 을 확장하고 싶습니다 . 하나의 창에서 모든 정보를 입력하고 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 Remote Apps 및 클라이언트 서버에 연결하는 데 큰 성공을 거둔 #! ++ 랩톱에서이 기능을 사용합니다. 스크립팅에 익숙하지 않으므로 제안이나 의견이 있으시면 듣고 싶습니다.



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

이것은 xfreerdp의 github 문제에 대해 묻고 더 자세히 논의했습니다 : https://github.com/FreeRDP/FreeRDP/issues/1358

bash 스크립트 아이디어는 /programming/3980668/how-to-get-a-password-from-a-shell-script-without-echoing 에서 가져 왔습니다.


이렇게하면 사용자에게 비밀번호가 노출 ps -ef됩니다.
reinierpost 2009

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 솔루션을 좋아했지만 zenity가 아닌 yad로 콤보 상자를 사용할 수 있습니다.

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.