屏幕/ autossh问题:最简单的方法来透明地将屏幕整合到我的SSH?

我有点新的屏幕和自动刷新:

我只是想“完全自动化”我的SSH会话,使其隐式持久性,并让他们自动恢复,如果我的连接下降。

我试过直接使用屏幕,但发现它的一些按键(例如ctrl + a)会干扰我的shell – 也就是说,它们会使用相同的按键覆盖shell/程序function。 有没有解决的办法?

事实上,我真的不希望意识到屏幕正在运行。 我只是想从terminal窗口“ssh”,并且如果我的networking死亡,笔记本电脑进入睡眠模式等,这种连接仍然存在。

我的要求是否天真? 我简单化了吗?

我使用以下设置:

我有一个别名,使用SSH连接到我select的服务器,根据需要启动/重新连接屏幕。 我还将Ctrl-A快捷键重新映射到Ctrl-Z,因为我使用这个快捷键的次数很less,而且很容易input。

alias myscreen='TERM=xterm ssh myserver -a -x -t /opt/local/bin/screen -xRR -A -e^Zz -U -O'

然后我可以打开一个terminal并键入myscreen ,然后我将连接到myserver 。 我甚至可以打开多个terminal,多次inputmyscreen ,并将多个terminal连接到同一个屏幕。 我经常使用它,在一个窗口中显示一个屏幕terminal,另一个在另一个窗口中显示。

如果你想自动重新连接,你可以做类似的事情

$ while :; do myscreen; done

甚至

$ while :; do while ! ping -c1 -t1 myserver >/dev/null; do sleep 10; done; myscreen; echo Connection dropped at $(date); sleep 5; done

请注意,以上所有内容均位于连接到Solaris的OS X上,因此ping的语法和屏幕的位置可能会有细微的差异。

还有一件事:你可以自定义屏幕,我特别喜欢我的.screenrc的这些位(在远程端):

 # A nice status line at the bottom hardstatus alwayslastline "%-w%{= BW}%50>%n %t%{-}%+w %<%=|%h" # special xterm hardstatus: use the window title. termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007' # Do not use xterm's alternative window buffer, it breaks scrollback termcapinfo xterm*|xs ti=\E7\E[?47l 

不知道什么autossh做。 我使用bash函数来启动屏幕的ssh:

 ga () { host=$1 if [[ ${host} == "" ]] then echo "Provide hostname no to connect to." else screen -S ${host} -t ${host} ssh -q -X -l ahumane ${host} fi } 

它将屏幕的名称设置为ssh主机,以便您可以在“screen -ls”