在UTF8的终端里逛水木

luit -encoding gbk ssh <id>@newsmth.net  #newsmth最近已经支持了ssh v2了, 不需要再加`-1`参数

防发呆

$ cat ~/.ssh/config 
Host *
    TCPKeepAlive yes
    ServerAliveInterval 15
    ServerAliveCountMax 3

来源链接

(貌似效果没有那么显著, 但也有一部分改善. )

Fix 1

有时候 luit 1.1.1 版本会报 Segmentation fault (core dumped)

根据这篇文章:

$ wget http://invisible-island.net/datafiles/release/luit.tar.gz
$ tar -xvf luit.tar.gz
$ cd luit-*; ./configure; make; sudo make install

装一个新版本的luit就好了.

Fix 2

~~新版本的ssh已经不支持ssh1了. ~~ 2016-11-04: KCN已经更新了水木, 增加了SSH2支持

但是有一个legacy的包还支持.

$ sudo apt-get install openssh-client-ssh1

$ luit -encoding gbk ssh1 -1 <id>@newsmth.net

Fix 3: gnome-terminal 字符宽度问题

Profile -> Compatibility -> Ambiguous-width characters: 选成 Wide

否则 ASCII 字符对不齐.

自动输入密码

$ sudo apt-get install sshpass
$ alias newsmth="luit -encoding gbk sshpass -p <yourpassword> ssh1 -1 <id>@newsmth.net"

用gpg加密一下

echo <yourpassword> | gpg -c > ~/.newsmthpassword && chmod 600 ~/.newsmthpassword

# 在~/.bashrc里加入下面一行
alias newsmth="eval \"luit -encoding gbk sshpass -p \$(cat ~/.newsmthpassword | gpg) ssh scateu@bbs.newsmth.net\""

或者用 openssl 来加密

echo <yourpassword> | openssl aes-128-cbc -e -a
# 在~/.bashrc里加入下面一行
alias newsmth="eval env SSHPASS=\$(echo <那一串hash> | openssl aes-128-cbc -d -a) luit -encoding gbk sshpass -e ssh scateu@newsmth.net"  

之所以用eval, 是为了避免一开bash就执行那个解密操作.

不建议sshpass-p参数, 因为可以在topps里看到明文密码. 用env可以把$SSHPASS限制在这一行命令中而不泄漏.

See Also