情況
sshでトンネルを掘りつつscreenに繋いだ場合やsudoでscreenに繋ごうとした場合、エラーが出てしまうことがあります。
$ sudo -u user screen -x
Cannot open your terminal '/dev/pts/12' - please check.
これはsudoした際にターミナルの環境がptsになっているせいのようです。
解決作はserverfaultにありました。
Sudo as different user and running screen
http://serverfault.com/questions/116775/sudo-as-different-user-and-running-screen/116830#116830
以下の関数を.bashrcに載せることでscreenコマンドを変更できるようです。
~/.bashrc
function screen() {
/usr/bin/script -q -c "/usr/bin/screen ${*}" /dev/null
}
この状態で
$ screen -x
とするとうまく繋がります。
関数化が面倒な場合には若しくは
$ /usr/bin/script -q -c "/usr/bin/screen -x" /dev/null
といったように、script
の引数の箇所にsceen
の引数を生書きするとうまく動きました。