OpenSSH 和 Linux
从Linux笔记本电脑(我们假定其IP地址为192.168.1.106)上 ,我们就可以直接访问防火墙后的资源,包括Samba 服务器、 Web 服务器,甚至由防火墙对外锁定的邮件服务器。防火墙仅允许通过22号端口对SSH服务器的访问,不过笔记本电脑仍然可以访问其它的服务器:
## Linux Laptop .ssh/config ##
Host work
HostName 66.35.250.203
User sporkey
LocalForward 20000 192.168.0.66:80
LocalForward 22000 192.168.0.66:22
LocalForward 22139 192.168.0.8:139
LocalForward 22110 192.168.0.5:110
Host http
HostName localhost
User donkey
Port 22000
这个文件必须恰当地设置其权利:
$ chmod 600 ~/.ssh/config
可以看一下上面的文件。注意到条目“LocalForward 22000 192.168.0.66:22”,并将其与网络图表相对比。到SSH服务器的连接是通过从Linux笔记本电脑上运行下面的命令实现的:
$ ssh -l sporkey 66.35.250.203
小提示:上面的命令可以被缩写,因为用户名“sporkey”和“主机名”已经在配置文件中指定了。因此,你可用下面显示的“SSH work”:
$ ssh work
在完成这个连接之后,就有可能直接访问HTTP服务器,假定账户“donkey”可以访问这个服务器。下面的命令是在Linux笔记本电脑(192.168.1.106)上执行的。是的,那是一个处于新窗口中的Linux笔记本电脑。此外,这是在IP地址为192.168.1.106的主机中的一个新的会话中执行的。因此,请注意这儿的Linux笔记本电脑可以直接访问192.168.0.66。请注意,这儿的SSH会话起始于Linux笔记本电脑。
$ ssh -l donkey localhost -p 22000
因为配置文件将“HTTP”映射到localhost 端口2200上,所以上面的命令可以简写如下:
$ ssh http
不过,别急。有一个更好的方法。其实,我们不用创建两个终端会话,一个用于ssh work,另外一个用于ssh http,我们为什么不能将其用在一个命令中呢:
$ ssh -N -f -q work; ssh http
上面的命令将建立连接,从所需的端口转发到其它的服务器。“-N”表示“不要执行远程命令”,而“-f”要求ssh转到后台,“-q”是禁止所有的警告和诊断信息。那么这对你来说是不是还太繁琐?那就创建一个别名(alias)吧:
alias http=‘ssh -N -f -q work; ssh http’,并将其放置到~.bashrc文件中,这样就可以使它尽可能地简短,因为在命令行键入http将使你达到HTTP服务器。
要将文件复制到这个服务器,就要使用下面的命令(注意:scp之后的大写P)。如果你在.ssh目录中,你就会看到一个授权的authorized_keys2或者是一个授权的authorized_keys,你可能想要将其追加到目标服务器的类似文件上。这些文件仅仅作为一个示例而列示。可以复制任何文件,不过如果你将这些文件复制到远程服务器上,并将内容追加到远程服务器的authorized_key*文件,那么在下次你建立连接时,就不会被提示要求口令。