SSH动态端口转发
SSH动态端口转发将各种数据转发到远程端口,实际上相当于在本地电脑的指定端口开了一个SOCKS代理。如果你的远程主机位于墙外,这个SOCKS代理就能为你提供”翻墙”功能。
SSH动态端口转发命令
ssh -g -C -o ServerAliveInterval=60 -o StrictHostKeyChecking=no -i /xxx/path/your_private_key -p 8443 -D 7071 username@yourhost |
AutoSSH
AutoSSH是一个用来启动ssh并进行监控的程序,可在需要时重启 ssh,例如程序挂掉或者是网络出现问题。
AutoSSH安装
sudo apt-get install autossh |
AutoSSH使用
autossh [-V] [-M port[:echo_port]] [-f] [SSH_OPTIONS] |
具体参数解释参考man autossh
开机启动AutoSSH
如果你经常需要通过SSH代理,那么设置AutoSSH开机启动会方便很多。
Crontab脚本
在/etc/cron.d/
目录下,添加启动文件autossh
,内容如下:
# /etc/cron.d/autossh: start autossh for ssh forward on system start |
UpStart脚本
在/etc/init
目录下添加autossh.conf
文件,内容如下:
# autossh startup Script |
注意:两种方式中SSH选项中一定要添加-N
选项,-N
代表不执行远程指令,也就不会创建交互式Shell,启动脚本在执行时是没法创建交互式Shell的;因为-N
选项只在SSH协议v2中有效,如果SSH协议默认版本为SSHProtocolv1,可以通过-2
选项强制使用SSHProtocolv2。如果不指定-N
选项,会在syslog
中看到如下错误:ssh exited prematurely with status 0; autossh exiting
SSH命令参数
-g: 允许其他机器连接本机SSH转发端口
-C: 请求压缩所有数据
-o: 指定配置选项,格式同ssh_config
-i: 指定私钥文件
-p: 指定远程服务器的端口
-D: 指定本机动态转发端口
-2: 强制使用ssh协议版本2
-N: 不执行远程指令