OS X와 Yubikey에 저장된 SSH 개인 키를 사용하여 SSH를 통해 원격 서버에 연결하고 있습니다. Mac이 잠자기 상태이거나 깨어날 때마다 .매번 실행해야 합니다 gpg-connect-agent updatestartuptty /bye
.이 답변~/.ssh/config
이 명령을 이렇게 입력할 수 있다고 가정해 보세요.
Match host * exec "gpg-connect-agent updatestartuptty /bye"
GPG_TTY
하지만 컨텍스트의 환경 변수를 exec
현재 쉘의 값으로 설정 해야 하기 때문에 이것은 작동하지 않습니다 tty
. 저는 생선껍질을 이용해서 이렇게 넣어요~/.config/fish/config.fish
set -x GPG_TTY (tty)
그러나 ssh exec
가 실행되면 tty가 반환됩니다 not a tty
. 이것은 내 환경 변수입니다.
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
Match host * exec ...
tty를 어떻게 상속받을 수 있나요 ? 아니면 잠자기/깨우기 후에 OS X가 Yubikey + SSH와 작동하도록 하는 더 좋은 방법이 있습니까?
답변1
~에 따르면OpenSSH 소스 코드, "Match exec" 기능에 대해 호출된 명령의 표준 입력 및 출력은 /dev/null에 연결되어 있습니다. 그러나 표준 오류는 유지됩니다. ssh
TTY에서 실행하는 경우 exec 명령의 표준 오류는 여전히 TTY여야 합니다.
이 tty
명령은 표준 입력에 연결된 TTY를 보고합니다. 명령줄 리디렉션을 사용하여 tty
명령의 stderr을 해당 stdin에 연결할 수 있습니다. 저는 fish
사용자 는 아니지만 bash
예를 들어 다음과 같이 실행합니다.
tty <&2