{"id":3483,"date":"2020-03-30T11:04:59","date_gmt":"2020-03-30T10:04:59","guid":{"rendered":"https:\/\/esferas.org\/msqlu\/?p=3483"},"modified":"2020-03-30T11:04:59","modified_gmt":"2020-03-30T10:04:59","slug":"kde5-y-los-agentes-ssh-y-gpg","status":"publish","type":"post","link":"https:\/\/esferas.org\/msqlu\/2020\/03\/30\/kde5-y-los-agentes-ssh-y-gpg\/","title":{"rendered":"KDE5 y los agentes SSH y GPG"},"content":{"rendered":"\n<p>Han cambiado un tanto las cosas y, encima, tiene peor integraci\u00f3n entre estos elementos a pesar de su fama.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Antes de nada comentar que el proceso de ejecuci\u00f3n de programas en el arranque y parada de sesi\u00f3n est\u00e1 automatizado: se llama al programa <a href=\"https:\/\/docs.kde.org\/trunk5\/en\/kde-workspace\/kcontrol\/autostart\/index.html\">Autostart<\/a> (Autoarranque en espa\u00f1ol) y se puede gestionar casi todo:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2020\/03\/imagen-2.png\" alt=\"\" class=\"wp-image-3486\" width=\"400\" height=\"279\" srcset=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2020\/03\/imagen-2.png 898w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2020\/03\/imagen-2-300x209.png 300w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2020\/03\/imagen-2-768x535.png 768w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/figure><\/div>\n\n\n\n<p>Pero como siempre que puedo prefiero comprender qu\u00e9 ocurre, he rebuscado en la documentaci\u00f3n de auto arranque -y alg\u00fan foro m\u00e1s- y he encontrado cosas \u00fatiles, sobre todo de aspectos que han cambiado desde mi \u00faltimo uso de KDE all\u00e1 por la temprana publicaci\u00f3n de la versi\u00f3n 4. <\/p>\n\n\n\n<p>En la documentaci\u00f3n del proceso de arranque hay un p\u00e1rrafo especial. Si sigues lo que dice est\u00e1 chupado y no hace falta leer m\u00e1s.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">To migrate your personal autostart setting from KDE Workspaces 4:\nCopy desktop files from <code>$HOME\/.kde\/Autostart<\/code> to <code>$HOME\/.config\/autostart<\/code>\nCopy pre startup script files from <code>$HOME\/.kde\/Autostart<\/code> to <code>$HOME\/.config\/plasma-workspace\/env<\/code>\nCopy shutdown script files from <code>$HOME\/.kde\/Autostart<\/code> to <code>$HOME\/.config\/plasma-workspace\/shutdown<\/code><\/pre>\n\n\n\n<p>En Debian la documentaci\u00f3n es m\u00e1s escasa y me he visto obligado a echarle un vistazo al fuente del programa <em>startkde<\/em>.<\/p>\n\n\n\n<p>All\u00ed he aprendido lo siguiente:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>KDE busca programas de inicio (y de parada) en dos lugares: uno de usuario y otro de sistema. <\/li><li>La configuraci\u00f3n de usuario se toma de la variable de entorno <em>$XDG_CONFIG_HOME<\/em> (de la normativa <a href=\"https:\/\/specifications.freedesktop.org\/basedir-spec\/basedir-spec-latest.html\">XDG<\/a>) o emplea <em>$HOME\/.config<\/em> si no existe. <\/li><li>Para la configuraci\u00f3n global o de sistema usa algo parecido. o la variable de entorno <em>$XDG_CONFIG_DIRS<\/em> o el directorio <em>\/etc\/xdg<\/em> directamente.<\/li><li>Sea cual sea su origen el entorno de escritorio Plasma utiliza el subdirectorio <em>plasma-workspace<\/em> para sus preferencias.<\/li><li>Existen como tres fases en las que situar un programa: antes de tener el entorno gr\u00e1fico, tras levantarlo y antes de pararlo.<\/li><li>Antes de tener entorno gr\u00e1fico es el momento de ejecutar programas que alteren el entorno como los citados agentes de usuario del t\u00edtulo. \u00bf Por qu\u00e9 ? Pues porque el script de arranque es justamente eso, un script, y la forma de ejecutar estos programas es en el mismo <a href=\"https:\/\/en.wikipedia.org\/wiki\/Dot_(command)#Source\">contexto<\/a>; cualquier cambio en las variables de entorno se queda all\u00ed para todos los dem\u00e1s programas ya que son hijos suyos.<\/li><li>En este caso los scripts deben estar en el directorio <em>env<\/em> (es decir, en <em>$config\/plasma-workspace\/env<\/em>) ser legibles (<em>test -r<\/em>) y tener la extensi\u00f3n <em>.sh<\/em>. <\/li><li>Luego, si es necesario hacer algo al cerrar el entorno gr\u00e1fico, se debe emplear el subdirectorio <em>shutdown<\/em> (<em>$config\/plasma-workspace\/shutdown<\/em>) de la misma forma. Aviso de que no he encontrado nada al final de <em>startkde<\/em> que valide \u00e9sto; se menciona en la documentaci\u00f3n pero creo que es cosa ya del entorno gr\u00e1fico realizar esta tarea. <\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">ssh-agent<\/h4>\n\n\n\n<p>No voy a mencionar nada de este tema en profundidad porque ya hay material de sobra en la red. Aqu\u00ed prefiero dejar s\u00f3lo los detalles t\u00e9cnicos.<\/p>\n\n\n\n<p>El script que a\u00f1ado al entorno KDE para activar y cargar el agente SSH es el siguiente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/sh \n\n#   Antes de lanzar el agente comprobamos que no est\u00e9 funcionando uno\nif &#91; -n \"$SSH_AGENT_PID\" ] &amp;&amp;\n   &#91; -z $(ps -o pid -h $SSH_AGENT_PID) ]; then \n    echo \"Arrancando instancia de agente SSH ...\"\n    eval $(ssh-agent)\nfi \n\n#   A\u00f1adimos las claves predeterminadas y otras espec\u00edficas\nssh-add \nssh-add ~\/.ssh\/empresa<\/code><\/pre>\n\n\n\n<p>El archivo se sit\u00faa, como he dicho, en  <em>~\/.config\/plasma-workspace\/env\/ssh-agent.sh<\/em> y lo que hace es a\u00f1adir las claves habituales al agente en la primera invocaci\u00f3n de <em>ssh-add<\/em> y luego una espec\u00edfica para conectar con la empresa en la segunda. Para \u00e9sta, adem\u00e1s, conviene tener instalado el programa ssh-askpass y as\u00ed pedir\u00e1 una contrase\u00f1a en el entorno gr\u00e1fico. Hay varias alternativas dependiendo del entorno gr\u00e1fico y en Debian parece que est\u00e1 cubierto cuando instalas KDE pero por si acaso mejor tenerlo.<\/p>\n\n\n\n<p>Si se necesita a\u00f1adir una clave y probar la integraci\u00f3n con esta herramienta es necesario redirigir la entrada est\u00e1ndar para que la use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ ssh-add ~\/.ssh\/empresa &lt;\/dev\/null<\/code><\/pre>\n\n\n\n<p>Una de las cosas que me ha sorprendido (no s\u00e9 si gratamente) es que en Debian Buster (e imagino que quiz\u00e1s antes) el paquete <em>openssh-client<\/em> ya incluye un servicio definido para <em>systemd<\/em>. Esto es, que ya se arranca un agente de este tipo cuando se inicia la sesi\u00f3n. De ah\u00ed que en el script anterior compruebe si existe para no lanzar uno por mi cuenta. He comprado que los agentes <em>ssh<\/em> pueden coexistir sin problemas en el sistema en un n\u00famero absurdo (en pruebas he llegado a contabilizar una docena) por lo que es mejor ir a\u00f1adiendo claves en lugar de iniciar nada. <\/p>\n\n\n\n<p>Luego est\u00e1 el asunto de las contrase\u00f1as y el llavero de KDE <em>kdewallet<\/em> del que a\u00f1adir\u00e9 notas m\u00e1s abajo. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">gpg-agent<\/h4>\n\n\n\n<p>Bueno, pues ahora el otro agente que me hace falta y para el que existe soporte tambi\u00e9n en el sistema. De nuevo <em>systemd<\/em> se ha adelantado y lanza un agente GPG conectado con <em>dbus<\/em> por lo que seg\u00fan comenzamos la sesi\u00f3n ya est\u00e1 preparado para ello. <\/p>\n\n\n\n<p>Una vez que dicho agente est\u00e1 activo usar gpg para cifrar algo pondr\u00e1 en marcha la comunicaci\u00f3n con dicho agente para que proporcione la clave necesaria. Si no la tiene debe cargarla directamente del anillo personal y solicitar una contrase\u00f1a para acceder a ella. <\/p>\n\n\n\n<p>Y s\u00ed, en este caso no he tenido que hacer nada m\u00e1s. La pide una vez y la conserva hasta que expire el tiempo establecido con los valores <em>default-cache-ttl<\/em> y <em>max-cache-ttl<\/em>. <\/p>\n\n\n\n<p>Ah, otra cosa m\u00e1s antes de que se me olvide: gpg-agent incluye un emulador de agente para <em>ssh<\/em> tambi\u00e9n. As\u00ed que si se instala con la configuraci\u00f3n predeterminada se dispone de los dos. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">kdewallet<\/h4>\n\n\n\n<p>El almac\u00e9n de contrase\u00f1as de KDE. No tiene tanta integraci\u00f3n como el de Gnome pero hasta ahora no estoy teniendo demasiados problemas con \u00e9l. <\/p>\n\n\n\n<p>Si se instala el paquete <a href=\"https:\/\/packages.debian.org\/ksshaskpass\">ksshaskpass<\/a> basta con emplear <em>ssh-add<\/em>   para que la contrase\u00f1a de la clave quede registrada en el llavero y   pueda ser reutilizada tranquilamente. Hay varias t\u00e9cnicas para   desactivar este comportamiento pero creo que no merece la pena si no hay   ajustes muy especiales que hacer. As\u00ed funciona bien.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2020\/03\/imagen-5.png\" alt=\"\" class=\"wp-image-3500\" width=\"495\" height=\"445\" srcset=\"https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2020\/03\/imagen-5.png 556w, https:\/\/esferas.org\/msqlu\/wp-content\/uploads\/sites\/12\/2020\/03\/imagen-5-300x270.png 300w\" sizes=\"auto, (max-width: 495px) 100vw, 495px\" \/><\/figure>\n\n\n\n<p>Y aqu\u00ed me encuentro el problema de siempre con KDE. La informaci\u00f3n sobre c\u00f3mo funciona internamente est\u00e1 dispersa y a veces demasiado entremezclada con el desarrollo. Si quieres saber c\u00f3mo funcionan las aplicaciones para un usuario bien, si necesitas conocer algo m\u00e1s interno vas dado. <\/p>\n\n\n\n<p>Y lo dejo aqu\u00ed porque llevo ya demasiado tiempo as\u00ed y \u00e9sto ya funciona. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Referencias<\/h3>\n\n\n\n<p>Enlaces a art\u00edculos, foros y otras fuentes con informaci\u00f3n relacionada:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"http:\/\/estan.dose.se\/2016\/04\/ssh-agent-kwallet-pam-ssh-add-and-ksshaskpass-under-plasma\">ssh-agent, kwallet-pam, ssh-add and ksshaskpass under Plasma<\/a><\/li><li><a href=\"https:\/\/wiki.archlinux.org\/index.php\/KDE#Autostarting_applications\">KDE en el wiki de Arch Linux<\/a><\/li><li><a href=\"https:\/\/nwrickert2.wordpress.com\/2016\/08\/19\/taming-kdewallet\/\">Taming KDEwallet<\/a><\/li><\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Han cambiado un tanto las cosas y, encima, tiene peor integraci\u00f3n entre estos elementos a pesar de su fama.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"footnotes":""},"categories":[6],"tags":[18,41,1000,288,1002,999,1001],"class_list":["post-3483","post","type-post","status-publish","format-standard","hentry","category-debian","tag-administracion-de-sistemas","tag-debian","tag-gpg-agent","tag-kde","tag-kwallet","tag-ssh-agent","tag-xdg"],"_links":{"self":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/3483","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/comments?post=3483"}],"version-history":[{"count":16,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/3483\/revisions"}],"predecessor-version":[{"id":3504,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/posts\/3483\/revisions\/3504"}],"wp:attachment":[{"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/media?parent=3483"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/categories?post=3483"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/esferas.org\/msqlu\/wp-json\/wp\/v2\/tags?post=3483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}