连接到服务器后重新打开屏幕会话

连接到服务器后重新打开屏幕会话

我只在我的 vps 上一直运行的 screen 会话中工作。当我通过 ssh 连接到此服务器时,我会使用 bash 别名重新连接它

alias screenr='screen -r -d'

我想要的是:

连接到服务器并自动重新连接会话。

我尝试过的:

screen -r在我的 .bashrc 末尾添加内容会导致屏幕显示一条信息消息,提示我已加入会话。

有什么想法吗,或者我只是错过了手册页上的一个参数?

答案1

尝试使用 ssh 配置文件 (~/.ssh/config),而不是 bashrc。您可以将其更改为在登录时运行命令。例如:

Host some_alias
Hostname                your_vps.dyndns.org
Port                    22
User                    some_user
PermitLocalCommand      yes
LocalCommand            screen -dRR screen_session_name

然后你要做的就是ssh 某个别名您将自动重新连接到您的屏幕会话,名称为screen_session_name(如果不存在则创建它)。

编辑:顺便说一下,这发生在您的本地机器上,而不是您的服务器上。

答案2

我在我的.bash_profile中使用了以下内容:

# if not running screen, attached to a terminal and is myusername (not run through sudo)
if [ -z "${STY}" -a -t 0 -a X${USER} = Xmyusername ]; then
    # function to re/attach to screen
    reattach () {
        # if Agent Forwarding is active, set up a mechanism to update the socket
        if [ -n "${SSH_AUTH_SOCK}" ]; then
            ln -snf "${SSH_AUTH_SOCK}" "${HOME}/.ssh/agent-screen"
            SSH_AUTH_SOCK="${HOME}/.ssh/agent-screen" export SSH_AUTH_SOCK
        fi
        # replace the login shell with screen
        exec screen -A -D -RR ${1:+"$@"} ;
    }
    # remove any defunct sessions
    screen -wipe
    echo 'starting screen... (type Cntl-C to abort)'
    sleep 5 && reattach
fi

这将创建一个唯一的会话,我将在登录时重新连接到该会话。如果我只需要 shell,它将等待 5 秒钟。myusername在第一if个子句中更改。

相关内容