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を使用したDebian wheezyでは、ソースから確認できる限り(チェックできるRDPサーバーはありません)、パスワードプロンプトがあります。
Gilles「SO-邪悪なことをやめなさい」

バージョン1.2.0-beta1を使用しています。
オシロワネン2014年

2
なんで一体使ってるのsudo
MikeyB 2015年

回答:


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を実行すると、どちらが表示されます。また、それぞれの詳細については、wikiのリリーストピックを参照してください。

接続例

以下は、RDPサーバーに接続する例です。

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

ユーザーにプロンプ​​トを出す

FreeRDP Issue Trackerのこの問題:Prompt for Credentials-NLA#1512には、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

上記を実行すると、これらのダイアログがユーザーに表示されます。これらは1つずつ順番に表示されます。

                   ss#1         ss#2

参照資料


1
これをありがとう。ただし、を試してみるとxfreerdp /v:farm.company.com /d:company.com /u:oshiro /g:rds.company.com /p、ドキュメントと使用できるすべてのコマンドが表示されます。pそれが機能し始めた後すぐにパスワードを入力するとすぐに。
オシロワネン2014年

@oshirowanen- /pスイッチを一緒に省略した場合?
slm

エラーが長すぎてコメントとして投稿できないため、元の質問をエラーメッセージで更新しました。
オシロワネン2014年

@oshirowanen-バグのようです:github.com/FreeRDP/FreeRDP/issues/1584。あなたと同じ出力を表示します。FreeRDPで問題を公開します。これを行う方法がわからない場合は、LMKをさらに支援できます。
slm

代わりにzenity --entry --text="Enter your _password:" --hide-text単に言うことができますzenity --password
user829755

7

slmの ソリューションについて詳しく説明します。1つのウィンドウですべての情報を入力し、RemoteAppをすべて一度に指定できるようにしたかったので、彼がzenityで提案したものを基に作成しました。

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リモートアプリ、クライアントサーバーへの接続に大成功を収めました。私はスクリプト作成の経験がないので、何か提案やフィードバックがありましたら、ぜひ聞かせてください。



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スクリプトのアイデアは、https//stackoverflow.com/questions/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ソリューションが好きでしたが、yad zenityではなく、コンボボックスを作成できます。

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.