这年头不翻墙就看不到真像了,前几天整了个 ssh 代理,就研究了下自动登录。
ssh 自动登录首选就是使用 key 了,可对方不干,那就只能使用密码了。自动输入密码可以用 expect。查这个的时候发现了一个 expect-lite,发现也挺有意思的,他把写 expect 脚本简单化了,比如想 send xxx,那就用 >xxxx 就行了,想 expect yyy 那就
spawn autossh -M 20000 -p SSH_PORT -N -D 7070 YOUR_NAME@YOUR_SERVER
set timeout 60
expect {
     assword: {
         stty -echo
         send "YOUR_PASS\r"
         stty echo
         #exp_continue
     }
    incorrect {
         send_user "invalid password or account\n"
         exit
     }
    timeout {
         send_user "connection to host timed out\n"
         exit
     }
    eof {
         send_user "connection to host failed\n"
         exit
     }
}
if {[fork]!=0} exit
disconnect

那里面那个 autossh 能自动给你重连,没仔细研究。那个 20000 后面的参数都是给 ssh 的,具体含意可以看 ssh 的 man。
最主要是最后那两行,能做到连接上之后主程序就退出了,不占用你的终端,而不影响 ssh 的连接。