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
.screenrca seguinte linha:setenv SSH_AUTH_SOCK "$HOME/tmp/ssh-agent-screen"- Isso garante que, dentro de
screen,sshprocure o soquete sempre no mesmo local, em vez de um caminho de alteração. - Você deve usar
setenvde acordo com o shell usado, já que é uma tela e não um comando de shell.
- Isso garante que, dentro de
-
Adicione a
.bash_profilea 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
sshparece) ao real e deverá aparecer após iniciandossh-agent. - A utilização de
[ -n "$SSH_AUTH_SOCK" ]impedirá adequadamente erros quandoSSH_AUTH_SOCKnã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-agentem.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.