Faz com que o usuário solicite FreeRDP para nome de usuário e senha?

10

No momento, estou usando o seguinte comando para iniciar uma sessão do FreeRDP:

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

Funciona bem. No entanto, não quero que a senha esteja na linha de comando desse jeito. Então eu tentei sem a senha:

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

E recebi uma mensagem de falha de conexão em vez de algum tipo de caixa de diálogo ou uma solicitação solicitando que eu digite uma senha.

É possível obter isso para solicitar uma senha ao usuário?

ATUALIZAÇÃO: Omitindo a opção /p

Sem a opção /p , obtenho o seguinte:

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
    
por oshirowanen 16.03.2014 / 01:49

6 respostas

12

O truque é colocar o interruptor de senha no final da sua linha de comando para que você possa deixar em branco. Isso acionará xfreerdp para solicitar sua senha em vez de precisar fornecê-la por meio da linha de comando.

Exemplo

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

OBSERVAÇÃO: A nova CLI está disponível nos pré-lançamentos, v1.1 +, então preste atenção especial à versão que você está usando. Executar o comando xfreerdp --version mostrará a você qual. Também dê uma olhada no tópico de lançamentos no wiki para mais informações sobre cada um deles.

Conexão de amostra

Aqui está um exemplo de conexão com um servidor RDP.

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

Solicitando ao usuário

Esse problema no rastreador de problemas do FreeRDP intitulado: Solicitação de Credenciais - NLA # 1512 , tinha esse trecho de como você poderia usar zenity para solicitar ao usuário um nome de usuário e senha usando as caixas de diálogo da GUI e depois executar xfreerdp com as informações fornecidas posteriormente.

$ 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

Os itens acima, quando executados, estariam esses diálogos até o usuário. Estes aparecerão um de cada vez.

Referências

por 23.03.2014 / 01:36
6

Eu gostaria de expandir em slm solução . Eu queria uma única janela para inserir todas as informações e permitir-me especificar um RemoteApp tudo de uma vez, então eu construí sobre o que ele sugeriu com zenity e criou isso.

Prompt XFreeRDP

Código:

#!/bin/bash#XFreeRDPRemoteAppW/PromptScript#Version0.3#Description:#XFreeRDPRemoteAppScriptutilizingZentitytopopulatevariables#WrittenbyJarrettHiggins12-2015OUTPUT=$(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=""

Funcionalidades:

  • O padrão é a porta 3389, se não for preenchida
  • Padrões para nenhum aplicativo remoto se não forem preenchidos

Planejado:

  • Aviso de certificado de segurança
  • Consulta RDWeb para fornecer lista de recursos

Eu uso isso no meu laptop #! ++ com grande sucesso para me conectar à minha empresa, aos aplicativos remotos da VM e aos servidores clientes. Não tenho experiência com scripts, por isso, se alguém tiver alguma sugestão ou comentário, adoraria ouvi-los.

    
por 04.12.2015 / 08:05
1

Você precisa fornecer um parâmetro vazio (sem valor de senha). Tente isto:

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

Se isso não funcionar, você pode fazer isso com um script bash simples.

Salvar como 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

Em seguida, torne o arquivo executável:

chmod +x rdp.sh

Inicie:

./rdp.sh

Isso foi perguntado e discutido mais detalhadamente sobre a questão do github do xfreerdp: link

A ideia do script bash é retirada de: link

    
por 22.03.2014 / 13:52
1

Eu também gosto do yad, usando o seguinte script de shell.

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

Ele fornece uma boa interface e oculta a senha.

    
por 14.10.2017 / 02:10
1

Se você especificar a segurança do tls, o computador remoto solicitará a senha:

Xfreerdp --sec tls

O novo formato de parâmetro:

  /sec:tls
    
por 28.02.2015 / 14:07
0

Você também pode usar --from-stdin. Em seguida, você será solicitado a fornecer os valores necessários que não foram fornecidos.

Eu gostei da solução Jarretts, mas com o zenity, você pode fazer caixas de combinação:

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" "")
    
por 15.03.2017 / 22:55