马上就加载好了...

乐在其中:使用SSH轻松管理国外主机

by on Sep 13 , 2009 , under 学术 , 962 views , 8 Comments

最近用上了口碑很好的美国dreamhost主机(这个博客不在dreamhost上),其他方面都非常地优秀,唯独速度方面比较遗憾,web访问 至少还能浏览,但ftp访问实在是慢得可以,几个G的文件用传统方式上传的话至少也要好几个小时吧!好在dreamhost提供了Shell account(支持SFTP/FTP两种登陆方式),这也是我首次拥有完全私有的ssh帐号,正式开始享受ssh带来的乐趣。

putty-sftp使用界面截图

什么是ssh

传 统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些 口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓 “中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中 间人”一转手做了手脚之后,就会出现很严重的问题。

SSH的英文全称是Secure Shell。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额 外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。 SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的“通道”。 SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。 用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。

使用ssh快速下载、解压

首 先我使用putty登陆ssh,在登录ssh之后,用cd命令进入到自己的文件夹,通常安装一个程序需要先把东西下载到本地,然后解压再上传,而有了 ssh之后这一切都变得如此简单:首先确定程序的下载路径,如discuz论坛,你就去discuz官网下载站复制一下它的压缩包下载地址,然后在 putty中输入“wget http://download.comsenz.com/Discuz/7.0.0/Discuz_7.0.0_SC_GBK.zip”,wget就是远程下载命令,后面的url就是程序包的地址,不出1分钟的时间这个压缩包就已经下载到你的国外主机上了,再用ls命令遍历文件夹,发现这个压缩包已经在列。

下载完毕之后,接着就是解压工作了,输入“unzip http://download.comsenz.com/Discuz/7.0.0/Discuz_7.0.0_SC_GBK.zip” 命令即可,unzip就是解压zip文件的命令,然后再次使用ls命令遍历文件夹,发现压缩包中的几个文件夹已经出现在当前文件夹下面,至此,远程下载和 解压功能已经完成,接下来的事情就只剩配置和安装了。不超过两分钟的时间,这一切全部完成了,我相信按照传统的做法至少需要半个小时甚至更多吧?

使用ssh快速管理数据库

由 于大部分phpmyadmin都有很多的限制,且速度也不佳,而ssh还可以帮助你快速地备份和恢复mysql数据库,假设有这样一个庞大的数据 库:MySQL地址:mysql.wjd.name,数据库名称:wjd,用户名:user,密码:123456 。如何备份mysql数据库呢?在putty中输入“mysqldump -h mysql.wjd.name -p wjd -u user >wjd.sql”,该命令是将数据库备份为wjd.sql文件,输入完毕后回车,会提示输入数据库密码,然后就ok了,用ls命令遍历文件夹,wjd.sql文件已经在当前目录下了。

恢复sql数据库文件的操作方法:输入“mysql -h mysql.wjd.name -p wjd -u user”该命令是进入数据库,然后按照提示输入密码,然后再次输入“source wjd.sql”,该命令是将wjd.sql这个数据库文件恢复到当前的mysql数据库,然后十几秒之后提示完成,再登陆phpmyadmin,发现sql文件中的几百个数据表已经在列,速度之快就像在本机操作一样。

使用ssh快速迁移网站

众所周知,每个网站都有无数的文件,迁移起来很是麻烦,但如果说前后的主机都有ssh功能,那么这一切将变得非常的简单,首先用putty登陆原来的主机根目录,输入“tar cfz bak.tar.gz *”该命令就是将文件夹中所有的文件打包成bak.tar.gz文件(linux下的压缩格式),然后再用putty登陆新的主机,输入“wget http://wjd.name/bak.tar.gz”,该命令就是上面所述的下载命令,注意url是根据你的域名、路径和文件名来的,然后输入“tar -xf bak.tar.gz”该命令就是解压文件,值得注意的是,zip文件和tar文件的解压命令是不同的,最后使用ls命令遍历文件夹,发现这个压缩包已经在列。

在网站所有文件迁移完成之后,将域名的主ip等信息转向到新的主机,然后再到旧主机上删除刚才所创建的压缩包(一定要删除,否则被探针下载的话,一些敏感信息会直接暴露无遗),至此,整个迁移过程在不到10分钟时间内全部完成。

使用ssh翻墙

这 是一个意外的惊喜,因为通过在国外主机上的ssh帐号,可以突破网络的限制,尽情享受翻墙带来的快乐。(警告:将 SSH 服务器用作连接其它服务器或网络的跳板将违反大多数主机服务提供商的资源使用政策。风险自负!)操作方法:打开putty(或者使用 MyEnTunnel),配置ssh-tunnels,“add new forwarded port”(转发端口)-“soruce port”设定为7000,再选择“dynamic”,这样配置好的socks5代理地址就是127.0.0.1:7000,然后点击open,输入“PLINK.exe -C -N -D 127.0.0.1:7000 uesr@hostname:port”最后的账户就是你的ssh账号,用户名@主机地址:端口。如果使用MyEnTunnel,则设置也是非常的简单,而ssh账号端口一般都是22。

代理设置好之后,在浏览器或代理插件(如autoproxy)中简单设置一下即可,配置大概如下:socks5代理,主机:127.0.0.1,端口:7000  。设置完毕之后重启一下浏览器,然后随意上个显示ip的网站,发现这个时候你已经是自由人了,哈哈。

ssh的一些常用命令

ssh命令非常多,笔者收集了一些比较常用的命令分享给大家,这仅仅是一小部分!

使用”$[Instructions] –help”可以获得以下各个命令[instructions]的帮助,包含其参数列表的定义。
-ls 列出当前文件夹下所有内容$ls -o 列出当前文件夹中所有内容,含详细信息,但不列出group
$ls -l 同上,含group信息
$ls -a 列出当前文件夹中所有内容,包含以”.”开头的文件
$ls -t 按更改时间排序
$ls -v 按版本先后排序
-cd [dir] 进入dir文件夹
-pwd 显示当前路径
-mkdir [dir] 新建文件夹
-chmod 更改文件/文件夹权限$chmod [Mode] [dir],其中Mode形如”755″或”777″等。
$chmod -R [Mode] [dir],递归形式,即将目标文件夹内所有文件均改变权限
Mode还有另一种表达方式,”755″即为”-rwxr-xr-x”,不列举了。
-rm [file] 删除文件/文件夹$rm -f [file] 强行删除,忽略不存在的文件,无提示
$rm -r [file] 递归删除所有内容
-cp 拷贝$cp [options] [source] [destination] 其中[options]可以为-f(强行拷贝)或-r(递归拷贝) 常用-a选项来复制整个目录树,常用于备份或者复制安装程序
-mv 重命名或移动$mv [options] [source] [destination]    其中 [options]常用:-f(强行移动/重命名), -i(移动/重命名前尝试), -u(更新)

 

水楼已经盖了 8 层了!

  1. Tweets that mention 乐在其中:使用SSH轻松管理国外主机 | 冬不拉的弦音-王佳冬博客 -- Topsy.com

    […] This post was mentioned on Twitter by wangjiadong. wangjiadong said: 乐在其中:使用SSH轻松管理国外主机 http://htxt.it/GUjN […]

  2. Alex

    你不会Linux?


  3. 兄弟,既然如此就帮忙发个破网软件吧。

  4. 冬瓜

    网上有很多类似软件的,哈哈


  5. 下了一天了,一个也也没成功,求你帮帮我了。

  6. 何苦呢

    很多外国主机都有ssh

  7. PaaS平台OpenShift,你也可以认为是全能免费空间 | 王佳冬中文博客 - 关于旅行,关于互联网

    […] OpenShift支持ssh和git的方式管理空间的文件,这对于国内的朋友来说可能有点难度,另外大家更习惯于ftp管理自己的空间,那么,我们如何使用FTP管理OpenShift的空间呢?其实也很简单: […]

赶快说点什么吧! ^_^