Com a configuração a seguir, você não precisará de nenhum wrapper para invocar screen
. Além disso, evita usar /tmp
(com os riscos de segurança conseqüentes).
-
Verifique se você tem um diretório ~ / tmp:
mkdir ~/tmp
-
Adicione a
.screenrc
a seguinte linha:setenv SSH_AUTH_SOCK "$HOME/tmp/ssh-agent-screen"
- Isso garante que, dentro de
screen
,ssh
procure o soquete sempre no mesmo local, em vez de um caminho de alteração. - Você deve usar
setenv
de acordo com o shell usado, já que é uma tela e não um comando de shell.
- Isso garante que, dentro de
-
Adicione a
.bash_profile
a seguinte linha:[ -n "$SSH_AUTH_SOCK" ] && [ "$SSH_AUTH_SOCK"!="$HOME/tmp/ssh-agent-screen" ] && ln -sf "$SSH_AUTH_SOCK" "$HOME/tmp/ssh-agent-screen"
- Isso vinculará o local fixo (onde
ssh
parece) ao real e deverá aparecer após iniciandossh-agent
. - A utilização de
[ -n "$SSH_AUTH_SOCK" ]
impedirá adequadamente erros quandoSSH_AUTH_SOCK
não estiver definido. -
[ "$SSH_AUTH_SOCK"!="$HOME/tmp/ssh-agent-screen" ]
impedirá sessões de tela ligando $ HOME / tmp / ssh-agent-screen a si mesmo, se as fontes da tela forem.bash_profile
.
- Isso vinculará o local fixo (onde
- Em vez de iniciar
ssh-agent
em.bash_profile
, você pode considerar a conexão comssh -A
(para usar o encaminhamento de agentes e fazer com que o computador remoto use seu agente).
Após essa configuração, você pode usar apenas o comando de tela padrão. Você só precisará recriar sessões existentes ou definir manualmente SSH_AUTH_SOCK dentro delas para o local fixo da etapa 2.
Créditos para este site para a ideia; Evitei usar /tmp
.
Esta resposta é semelhante, mas usa aliases extras.