Я знаю, что это может быть полностью исключено из темы, но рассматривали ли вы веб-приложение Гуакамоля? Оно предлагает клиентам VNC и RDP веб-интерфейс и аутентификацию. Я исследую его прямо сейчас, как часть удаления унаследованной службы ssl vpn. Guacamole имеет поддержку LDAP.
Извините, мне пришлось написать об этом в качестве ответа. За новинку в этом разделе, чтобы прокомментировать.
Я не могу воспроизвести упомянутую вами проблему с паролем, отображаемым в выходных данных команды history
.
Пароль, отображаемый в выводе из printenv
и export -p
, работает должным образом. Эти команды отображают переменные среды, и туда вы помещаете строку http_proxy
.
Переменные среды автоматически наследуются дочерними процессами, но не другими процессами. Я не понимаю, почему вы думаете, что это вызывает серьезную озабоченность, поскольку это видно только процессам в одном домене безопасности.
Но вы можете перестать помещать его в переменную окружения и вместо этого использовать обычные переменные оболочки. Тогда он не будет унаследован дочерними процессами. Поскольку вы, вероятно, хотите, чтобы curl имел доступ к переменной среды, вы можете передать переменную среды только этой одной команде, а не всем остальным командам.
#!/bin/bash
echo -n "User:";
read user
echo -n "Password:";
read -s password
proxy="http://$user:$password@$domain:$portnum"
if http_proxy="$proxy" curl -silent http://www.google.com | grep authentication_failed;
then
echo NO CONNECT
else
echo OK
fi
Вам лучше сохранить пароль в защищенном файле, доступном для чтения только текущему пользователю.
Затем вставьте содержимое этого файла или используйте механизмы, предоставляемые вашим целевым приложением.
imho curl
предоставляет такие параметры itselv.
Если вы передаете конфиденциальную информацию и используете ее регулярно, вероятно, лучше всего шифровать ее с помощью openssl
Ввод чего-то вроде
#create key as follows - will prompt for password
#echo -n 'secret you want encrypted' | openssl enc -aes-256-cbc -a -salt -pbkdf2|base64
export MY_SECRET='VTJGc2RHVmtYMTlzVnBGWXNYUitLWlpYT3BWdStaQXJXeUVwc1JORnFsNWswZXJKT1dkRWpsWkxLWVFnK1hONQo='
В вашем.bashrc вы получите зашифрованную переменную среды, к которой вы сможете получить доступ, где бы вам ни потребовался секрет, и вам будет предложено ввести кодовую фразу/пароль, который вы использовали при создании переменной среды.
В приведенном выше примере это «секрет»
Доступ к нему осуществляется с помощью следующей команды
`echo $MY_SECRET|base64 --decode|openssl enc -aes-256-cbc -a -d -salt -pbkdf2 `
напр.
xfreerpd /parameters.... /p:`echo $MY_SECRET|base64 --decode|openssl enc -aes-256-cbc -a -d -salt -pbkdf2`
Для вашего запроса, где вы создаете переменную среды с вашим паролем, встроенным в переменную среды
Вы можете создать переменную следующим образом
password_encrypted=`echo -n 'secret you want encrypted' | openssl enc -aes-256-cbc -a -salt -pbkdf2|base64`
Затем используйте его следующим образом
export http_proxy=http://$user:`echo $password_encrypted|base64 --decode|openssl enc -aes-256-cbc -a -d -salt -pbkdf2 `@$domain:$portnum
Часть base64 предназначена для того, чтобы вы могли установить переменную
MY_SECRET='VTJGc2RHVmtYMTlzVnBGWXNYUitLWlpYT3BWdStaQXJXeUVwc1JORnFsNWswZXJKT1dkRWpsWkxLWVFnK1hONQo='
И чтобы ваш секрет не застрял в истории команд и т.д.
Когда вы генерируете секрет, иногда вывод base64 будет состоять из нескольких строк, поэтому вам нужно использовать разрывы строк для вашей переменной.
echo -n 'secret you want encrypted' | openssl enc -aes-256-cbc -a -salt -pbkdf2|base64
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
VTJGc2RHVmtYMTlzVnBGWXNYUitLWlpYT3BWdStaQXJXeUVwc1JORnFsNWswZXJKT1dkRWpsWkxL
WVFnK1hONQo=
#take the above line break out
MY_SECRET='VTJGc2RHVmtYMTlzVnBGWXNYUitLWlpYT3BWdStaQXJXeUVwc1JORnFsNWswZXJKT1dkRWpsWkxLWVFnK1hONQo='
openssh каждый раз будет запрашивать пароль для шифрования и дешифрования, вы можете указать его как часть команды, но тогда вы просто скроете что-то из истории и т. д. Взгляните наhttps://www.tecmint.com/generate-encrypt-decrypt-random-passwords-in-linux/для получения некоторой информации о используя для этого openssh.https://www.serverlab.ca/tutorials/linux/administration-linux/how-to-base64-encode-and-decode-from-command-line/ для base64 иhttps://stackoverflow.com/questions/16072351/how-to-assign-an-output-to-a-shellscript-variableдля разных вариантов подстановки команд я использовал назад -галочку `выше
PS Добавление функции типа
get-key()
{
echo -n "$1"|base64 --decode|openssl enc -aes-256-cbc -a -d -salt -pbkdf2
}
To your bashrc дает вам быстрый доступ к секрету, если он вам нужен