¿Cómo hacer que ~/.ssh/config Match host * exec herede el nombre tty del shell actual?

¿Cómo hacer que ~/.ssh/config Match host * exec herede el nombre tty del shell actual?

Utilizo OS X y una clave SSH privada almacenada en Yubikey para SSH a servidores remotos. Cada vez que mi Mac duerme y se reactiva, necesito ejecutar gpg-connect-agent updatestartuptty /bye.esta respuestadije que puedo poner este comando ~/.ssh/configasí

Match host * exec "gpg-connect-agent updatestartuptty /bye"

Pero esto no funciona porque necesito configurar la GPG_TTYvar env en el contexto de esto execal valor de mi Shell actual tty. Yo uso concha de pescado y tengo esto en~/.config/fish/config.fish

set -x GPG_TTY (tty)

Pero cuando se ejecuta ssh exec, tty regresa not a tty. Estas son todas mis variables de entorno.

cat ~/.ssh/config

...
Match host * exec "env > /tmp/t"
...

[run ssh some-host command]

cat /tmp/t

PWD=/Users/dxia
COLORFGBG=12;8
LC_TERMINAL=iTerm2
LOGNAME=dxia
GPG_TTY=not a tty
LANG=en_US.UTF-8
XPC_FLAGS=0x0
TERM=xterm-256color
TMPDIR=/var/folders/x1/f9sjnv7j43z73sdv5lsk3r8h0000gp/T/
EDITOR=/usr/bin/vim
COLORTERM=truecolor
LC_TERMINAL_VERSION=3.4.10
XPC_SERVICE_NAME=0
__CF_USER_TEXT_ENCODING=0x1F6:0x0:0x0
HOME=/Users/dxia
ITERM_PROFILE=Default
TERM_PROGRAM=iTerm.app
TERM_PROGRAM_VERSION=3.4.10
DISPLAY=/private/tmp/com.apple.launchd.6iiZkY4Tos/org.xquartz:0
USER=dxia
SHLVL=1
COMMAND_MODE=unix2003
TERM_SESSION_ID=w0t0p1:5945A63C-850F-4DCF-A605-F72860D9D72C
__CFBundleIdentifier=com.googlecode.iterm2
SHELL=/usr/local/bin/fish
ITERM_SESSION_ID=w0t0p1:5945A63C-850F-4DCF-A605-F72860D9D72C
PATH=/opt/homebrew/sbin:/opt/homebrew/bin:/Users/dxia/.pyenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/sbin:/usr/local/opt/fzf/bin:/opt/homebrew/opt/fzf/bin:/Users/dxia/.jenv/shims:/Users/dxia/.jenv/shims:/Users/dxia/.rbenv/shims:/Users/dxia/google-cloud-sdk/bin
SSH_AUTH_SOCK=/Users/dxia/.gnupg/S.gpg-agent.ssh

¿Cómo puedo Match host * exec ...heredar el tty? ¿O existe una manera mucho mejor de hacer que OS X funcione con Yubikey + SSH después de dormir/despertar?

Respuesta1

De acuerdo con laCódigo fuente OpenSSH, los comandos invocados para la función "Match exec" tendrán su entrada y salida estándar conectadas a /dev/null. Sin embargo, el error estándar no se aplica. Si ejecuta sshdesde un TTY, el error estándar del comando exec debería seguir siendo el TTY.

El ttycomando informa sobre el TTY conectado a su entrada estándar. Puede utilizar la redirección de la línea de comandos para conectar el ttystderr del comando a su entrada estándar. No soy un fishusuario, pero en, bashpor ejemplo, ejecutarías algo como esto:

tty <&2

información relacionada