2011年11月29日星期二

A short guide to SSH port forwarding

A short guide to SSH port forwarding

SSH port forwarding, or TCP/IP connection tunneling, is a process whereby a TCP/IP connection that would otherwise be insecure is tunneled through a secure SSH link, thus protecting the tunneled connection from network attacks. Port forwarding can be used to establish a form of a virtual private network (VPN).
To illustrate how port forwarding works, let us use an example. Suppose you are the network administrator in a company that has two buildings. In Building #1, there are numerous workstations residing in the subnet 10.1.1.*. In Building #2, there are multiple servers residing in the subnet 10.2.2.*. The two buildings are separated by a busy street with parking spaces on each side, and the subnets in the two buildings are linked wirelessly through an antenna on the roof of each building. The workstations in Building #1 are running a legacy client application that uses an unencrypted TCP/IP session to communicate sensitive data with the servers in Building #2.
One day, someone in your company notices that an unmarked black van has remained parked on the street between the two buildings for several days. As your CEO realizes that sensitive data is being transmitted unencrypted between the two buildings, he becomes worried that the van parked outside might be collecting the company's confidential information. He orders you to solve the problem ASAP.
What you do is this:
On each of the client workstations in Building #1 (in the above example, workstation 10.1.1.7 is shown), you install an SSH client. On the machine in Building #2 that runs the server for your legacy application, you install an SSH server. You configure the SSH client with the following client-to-server port forwarding rule: for each connection that comes on interface 127.0.0.1 and port 999, forward that connection to the SSH server, and request the SSH server to forward that connection to host 127.0.0.1 (relative to the server), port 123.
Now, your application client doesn't connect to the server directly anymore. Rather, it connects to the SSH client, which encrypts all data before transmission. The SSH client forwards the encrypted data to the SSH server, which decrypts it and forwards it to your application server. Data sent by the server application is similarly encrypted by the SSH server and forwarded back to the client.
Previously, the data that was being radioed between the two buildings was sent in plaintext and could be captured by anyone parking on the street below. Now, the data is encrypted using the SSH protocol, and is virtually impossible to decipher. The next day after installing SSH, you observe that the black unmarked van is gone.
Now, let us comment on the above example. It corresponds with the following C2S (client-to-server) port forwarding rule in the SSH client:
  • Listen interface: 127.0.0.1 (this ensures that only connections from the local client machine, or loopback connections, are accepted for forwarding)
  • Listen port: 999
  • Destination host: 127.0.0.1 (important: the target address is relative to the server, not the client, so 127.0.0.1 will work fine if the target application server is listening on all interfaces - 0.0.0.0)
  • Destination port: 123
Note that the listening interface configured on the SSH client is 127.0.0.1. By configuring the listening interface, you tell the SSH client what kinds of connections it will accept. If you configure the listening interface to 127.0.0.1, the SSH client will only accept connections originating on the same machine. If you configure the listening interface to equal the IP address of one of the network cards on the machine, the SSH client will accept only those connections that arrive through that network card. If you configure the listening address to 0.0.0.0, the SSH client will accept connections regardless of their origin.
Next, you will note that the listening port has been set to 999. The listening port could be set to any figure between 1 and 65535 that is not already occupied by another application listening for connections on the same machine. In this case, the SSH client listening port has been set to 999, but it could just as well have been set to 123, the same port at which the application server is listening.
Now comes the most confusing part: the address of the destination host. It is important to understand that, in a client-to-server port forwarding rule, the target host address is relative to the SSH server, not the client. This is the address that the SSH server will connect to when a connection needs to be forwarded. In this case, the target host address is set to 127.0.0.1 to have the SSH server connect to the application server which is running on the same machine.
Finally, the destination port specifies the port on which the target TCP/IP server is listening - in this case, 123.
The port forwarding configuration shown in the above example is strict: it minimizes the exposure of unencrypted data by constraining the SSH client to reside on the same machine as the application client, and the SSH server to reside on the same machine as the application server.
On the other hand, if you are only concerned about eavesdropping between the SSH client and the server, and do not mind unencrypted data in the local subnets, you might configure your SSH port forwarding rules like this:
This corresponds with the following C2S (client-to-server) port forwarding rule in the SSH client:
  • Listen interface: 0.0.0.0 (this opens up the SSH client's forwarding socket to connections from other machines)
  • Listen port: 123
  • Destination host: 10.2.2.9 (the target application server is not on the same machine as the SSH server, so we need to enter its address as visible from the SSH server)
  • Destination port: 123
With this setup, you only need one SSH client to forward the connections of multiple application clients; since the SSH client's listening address is configured to 0.0.0.0, the application clients do not need to reside on the same machine. With appropriately configured port forwarding rules, you can use the same SSH session to forward connections to multiple application servers, which can reside on machines different from the SSH server.
Even though our examples above only discuss client-to-server port forwarding rules, the concept of server-to-client port forwarding is entirely symmetric. Only the roles are reversed: with S2C forwarding, the listening address is relative to the SSH server, and the destination host address is relative to the SSH client.
It is a common mistake to define both a C2S as well as an S2C rule for the same forwarded connection. This is not necessary and will not work. S2C rules are required only if you are forwarding other connections which are established in the direction from the server to the client. Such connections are normally independent from, and unrelated to, those established from client to server. Only one type of rule is necessary for each connection.

2011年11月28日星期一

常用Linux命令合集——基本操作篇

蜜果私塾:常用Linux命令合集
——基本操作篇
文:阿蜜果
日期:2011-7-26
转载请注明出处:http://www.blogjava.net/amigoxie/archive/2011/07/26/355046.html
看到有朋友在技术博客上汇总自己常用的Linux命令,我常用的Linux命令都记在各个备忘录中,不够集中,今天顺便做个合集吧!以便自己和他人更好的查看。
    doc文件下载地址:http://www.blogjava.net/Files/amigoxie/蜜果私塾:常用Linux命令合集-20110726.rar
1.1 文件和目录管理
1.1.1 创建文件:touch 文件名
         touch
文件名:用于新建文本文件,若文件已存在时,更改最新时间,但内容不变
         例如在所在目录创建amigo.txt文件,命令为:
[sn@minicc ~]$ touch amigo.txt
1.1.2 查看文件内容并分屏:more 文件名
         more 文件名:该命令用于显示文件内容,当文件内容很多时,进行分屏显示,按Enter键向下滚动,按“Ctrl+C”取消查看,例如分屏显示amigo.txt文件的内容:
[sn@minicc ~]$ more amigo.txt
test
test
test
test

--More—(61%)
1.1.3 查看文件内容并不分屏显示:cat 文件名
         cat 文件名:该命令与“more 文件名”类似,但是它不会进行分屏显示。
1.1.4 创建目录:mkdir 目录名
        
该命令用于创建目录,例如在当前目录创建amigodir目录,命令如下:
[sn@minicc ~]$ mkdir amigodir
         如果创建的目录已经存在,错误信息参考如下:
[sn@minicc ~]$ mkdir amigodir
mkdir: cannot create directory `amigodir': File exists
1.1.5 更改文件名或目录名:mv 原文件名或目录名 新文件名或目录名
         Linux中没有rename命令,使用mv(移动)命令进行文件或目录名的更改,例如将amigo.txt文件名更改为amigo1121.txt,命令参考如下:
[sn@minicc ~]$ mv amigo.txt amigo1121.txt
         又例如将amigodir目录更名为amigo1121dir目录,命令如下:
[sn@minicc ~]$ mv amigodir amigo1121dir
        mv命令执行后,只有新文件(目录)名的文件(目录)存在。
1.1.6 拷贝文件或目录:cp 原文件或目录 新文件或目录
         cp
命令用于进行文件或目录的拷贝,例如将amigo1121.txt文件拷贝到amigo.txt文件(内容也被拷贝)中,所用命令为:
[sn@minicc ~]$ cp amigo1121.txt amigo.txt
         amigo1121dir目录复制一份到amigodir目录,若amigodir目录不存在,创建新目录,并将amigo1121dir目录下的子文件也拷贝过去,命令参考如下:
[sn@minicc ~]$ cp -r amigo1121dir amigodir
1.1.7 删除空目录:rmdir 空目录名
        
该命令只能删除空目录,若目录下面有文件,会提示如下错误:
[sn@minicc ~]$ rmdir amigodir
rmdir: amigodir: Directory not empty
1.1.8 删除目录或文件:rm 名称(目录或文件名)
        
笔者一般使用命令:rm –rf 目录或文件名,用于强制删除后面所接名称的目录或文件名,例如强制删除当前目录下amigo1121dir文件夹,所用命令为:
[sn@minicc ~]$ rm -rf amigo1121dir
         说明:操作该命令时一定要小心,笔者公司有位实习生就发生过这样一个悲剧,在一台重要机器的/home目录下,她运行一个“rm -rf *”,将下面所有的东西都删除了,哈哈!
1.1.9 显示目录内容:ls 选项 [目录名]
     
该命令用于显示目录内容,有多个选项,常用的选项如下:
-a:列出目录下的所有文件,包括以“.”开头的隐含文件;
-k:以k字节的形式表示文件的大小;
-l:列出文件的详细信息;
-s:在每个文件名后输出该文件的大小。
笔者常用的命令为:ls –al [目录名],例如显示当前目录下所有文件和目录:
[sn@minicc ~]$ ls -al
total 84980
drwxrwxr-x 13 sn   oinstall     4096 Jul 25 22:17 .
drwxr-xr-x 32 root root         4096 Jul 11 20:05 ..
drwxr-xr-x 2 sn   oinstall     4096 Jul 25 22:18 amigo1121dir
-rw-r--r-- 1 sn   oinstall      341 Jul 25 21:43 amigo1121.txt
-rw------- 1 sn   oinstall    22266 Jul 25 19:30 .bash_history
-rw-r--r-- 1 sn   oinstall       33 Aug 9 2010 .bash_logout
-rw-r--r-- 1 sn   oinstall      647 Apr 21 10:46 .bash_profile
-rw-r--r-- 1 sn   oinstall      124 Aug 9 2010 .bashrc
……
若当前目录下文件众多,想查看以amigo开头的文件或目录的详细信息,可使用:
[sn@minicc ~]$ ls -al amigo*
-rw-r--r-- 1 sn oinstall 341 Jul 25 21:43 amigo1121.txt
-rw-r--r-- 1 sn oinstall 341 Jul 25 21:54 amigo.txt

amigo1121dir:
total 8
drwxr-xr-x 2 sn oinstall 4096 Jul 25 22:18 .
drwxrwxr-x 13 sn oinstall 4096 Jul 25 22:17 ..
1.1.10 显示当前所在目录:pwd
         该命令用于显示当前所在的详细路径,参考运行结果:
[sn@minicc ~]$ pwd
/home/sn
1.1.11 改变当前目录:cd [目录名]
         该命令可以用于切换目录,常用的有:
         cd ..:切换到当前目录的上一级目录,参考如下:
[sn@minicc ~]$ cd amigo1121dir
[sn@minicc amigo1121dir]$ pwd
/home/sn/amigo1121dir
[sn@minicc amigo1121dir]$ cd ..
[sn@minicc ~]$ pwd
/home/sn
[sn@minicc ~]$
         从上可以看出,运行“cd ..”命令后,目录从/home/sn/amigo1121dir切换到了它的上级目录:/home/sn目录。
         如下cd命令下不加任何东西,表示切换到该用户的根目录,例如在sn用户下运行cd命令,切换到/home/sn目录。
         cd 目录名:例如如上运行的:cd amigo1121dir,表示切换到当前目录的子目录amigo1121dir。目录名也可以详细的名称,例如:
[sn@minicc ~]$ cd /home/sn/amigo1121dir/test222
[sn@minicc test222]$ pwd
/home/sn/amigo1121dir/test222
[sn@minicc test222]$
1.1.12 更改文件或目录权限:chmod 权限设定字符串 文件或目录名
         该命令用于更改文件或目录的读、写和执行权限,有关权限代号的部分,列表于下:
   r:读取权限,数字代号为"4"
   w:写入权限,数字代号为"2"
   x:执行或切换权限,数字代号为"1"
   -:不具任何权限,数字代号为"0"
         一般设定权限为777(可读、可写和可执行)或755(可读、可执行),
         例如将当前目录下的amigo.txt文件的权限改成可读、可写、可执行,参考命令如下:
[sn@minicc ~]$ chmod 777 amigo.txt
         如果要将某个目录也改成可读、可写、可执行,例如将amigo1121dir目录的权限进行修改,参考命令如下:
[sn@minicc ~]$ chmod 777 amigo1121dir
        需要注意的是,如上命令只会改变所操作的目录,若想将该目录下的所有文件、子目录都改成777的权限,比上加上“-R”,例如将amigo1121dir目录下的所有文件或子目录修改成777权限,所用命令为:
[sn@minicc ~]$ chmod 777 -R amigo1121dir
1.2 用户和用户组管理
1.2.1 创建用户:useradd [-u UID] [-g initial_group] [-G other_group] [-d 用户目录]
        
添加Linux用户一般使用root用户来添加。Useradd命令不指定-d参数时,表示该用户的home目录为:/home/用户名。
  例如添加所属组为mysql组的用户名为amigo的用户,所用命令参考如下:
[root@minicc ~]# useradd -g mysql amigo
1.2.2 设置用户密码:passwd 用户名
        
使用passwd命令设置用户的密码,例如设置amigo用户的密码,可使用:
[root@minicc ~]# passwd amigo
Changing password for user amigo.
New UNIX password:
         输入一次密码,按Enter,再输入确认密码按Enter后完成设置。
         若要设置root用户的密码,直接用“passwd”命令,后面不用加用户名就可以。
1.2.3 删除用户:userdel [-r] [用户帐号]
         userdel
可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件。-f 删除用户登入目录以及目录中所有文件。
         例如:删除amigo1121用户,但不删除其所在的目录(例如:/home/amigo1121目录),参考命令为:
[root@minicc ~]# userdel amigo1121
         如果想删除用户的同时,将其用户目录删除,例如删除amigo用户及其用户目录,参考命令为:
[root@minicc home]# userdel -r amigo
1.2.4 切换用户:su - 用户名
         在某个用户下面操作时,可以进行用户切换,例如在sn用户下切换到amigo用户,所用命令为:
[sn@minicc ~]$ su - amigo
Password:
         输入amigo用户的密码后按Enter成功进行切换。若在root用户下进行用户切换,只需要运行“su – 用户名”,不用输入密码就能切换,因为root用户具有最高权限。
1.2.5 设置用户环境变量:.bash_profile
        
Windows下点击“我的电脑”->“属性”->“高级”->“环境变量”,可以进行用户环境变量的设置,在Linux下用户的环境变量在该用户根目录(例如:/home/amigo目录)的.bash_profile文件中,可使用vi等文件编辑命令进行设置。
  该文件的初始内容参考如下:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH

   例如,若想在该用户下配置MySQL数据库的访问,.bash_profile文件修改参考如下:
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
SDFDB=host@localhost:user@mysql:passwd@mysql123:db@sdp:charset@utf8:
export SDFDB

MYSQLDIR=/home/mysql
export MYSQLDIR
PATH=$PATH:$MYSQLDIR/bin
LD_LIBRARY_PATH=$MYSQLDIR/lib/mysql:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
PATH=$PATH:$HOME/bin
export PATH
export DBTESTPORT=22
unset USERNAME
   需要注意的是,要使该文件生效,需要在编辑完.bash_profile文件后运行如下命令:
[amigo@minicc ~]$ source .bash_profile
        若要使所设置的用户环境变量在该用户启动的应用程序生效,最好关闭该窗口,新开一个窗口,执行该应用程序的重启操作。
1.2.6 创建工作组:groupadd 工作组名
        
若要创建test1121的工作组,参考命令如下:
[root@minicc ~]# groupadd test1121
1.2.7 删除工作组:groupdel 工作组名
         例如,删除test1121的工作组,参考命令如下:
[root@minicc ~]# groupdel test1121
1.2.8 更改用户所属工作组:usermod -g 工作组名 用户名
         例如更改amigo用户(创建时设置的工作组为mysql)的工作组为test1121,命令如下:
[root@minicc ~]# usermod -g test1121 amigo
1.2.9 查看用户的身份:id用户名
         查看用户的身份可使用id命令,例如查看amigo用户的身份,参考运行结果如下:
[root@minicc ~]# id amigo
uid=543(amigo) gid=542(test1121) groups=542(test1121)
         如果要查看root用户的身份,可直接使用“id”命令,参考结果如下:
[root@minicc ~]# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),
6(disk),10(wheel)
1.3 Linux系统管理
1.3.1 重启Linux启动:reboot
        
使用reboot命令相当于Windows下的重新启动。
1.3.2 关闭Linux系统:shutdown -h now
        
使用该命令立即关闭所在的Linux系统。
1.3.3 查看各分区的使用情况:df -k或使用df -h
        
笔者一般使用df –k查看硬盘的使用情况,命令参考返回结果如下:
[root@minicc ~]# df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda3            149260480 25566268 115989840 19% /
/dev/sda1               101086     11846     84021 13% /boot
tmpfs                  1029784         0   1029784   0% /dev/shm
[root@minicc ~]# df -h
Filesystem            Size Used Avail Use% Mounted on
/dev/sda3             143G   25G 111G 19% /
/dev/sda1              99M   12M   83M 13% /boot
tmpfs                1006M     0 1006M   0% /dev/shm
1.3.4 查看内核/操作系统/CPU信息:uname -a
         该命令的参考返回结果如下所示:
[root@minicc ~]# uname -a
Linux minicc 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
1.3.5 查看计算机名:hostname
         该命令用于查看当前计算机名,参考运行结果如下:
[root@minicc ~]# hostname
minicc
1.3.6 查看内存使用量和交换区使用量:free –m
         命令参考返回结果如下:
[root@minicc ~]# free -m
              total       used       free     shared    buffers     cached
Mem:          2011       1973         37          0        105        866
-/+ buffers/cache:       1000       1010
Swap:         2047        940       1106
1.3.7 查看系统进程信息:top
      该命令在分析系统的进程的CPU、内存等的占有率时很有用,在做性能测试或性能分析时常被用到,命令参考实时运行结果如下:
top - 10:58:06 up 36 days, 2:24, 9 users, load average: 0.35, 0.65, 0.68
Tasks: 191 total,   5 running, 186 sleeping,   0 stopped,   0 zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.7%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st
Mem:   2059568k total, 2021772k used,    37796k free,   108396k buffers
Swap: 2096472k total,   963064k used, 1133408k free,   887800k cached

 PID USER      PR NI VIRT RES SHR S %CPU %MEM    TIME+ COMMAND 
19338 root      15   0 12740 1152 816 R 0.3 0.1   0:00.06 top                  
    1 root      15   0 10348 600 568 S 0.0 0.0   0:05.31 init                 
    2 root      RT -5     0    0    0 S 0.0 0.0   0:00.65 migration/0                                  
    3 root      34 19     0    0    0 S 0.0 0.0   0:01.10 ksoftirqd/0            
    4 root      RT -5     0   0    0 S 0.0 0.0   0:00.00 watchdog/0
……
    前五行是系统整体的统计信息。第一行是任务队列信息,第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。
最后两行为内存信息。内容如下:
Mem2059568k total 物理内存总量,2021772k used 使用的物理内存总量,37796k free 空闲内存总量,108396k buffers 用作内核缓存的内存量。
Swap2096472k total 交换区总量,963064k used 使用的交换区总量,1133408k free 空闲交换区总量,887800k cached 缓冲的交换区总量。
内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。
接下来是进程信息区,统计信息区域的下方显示了各个进程的详细信息。
1.3.8 实时查看服务器信息:vmstat 刷新间隔(单位:秒)
        
该命令常用来做Linux服务器监控,用该命令可以收集服务器信息来展现服务器情况,直接运行“vmstat”命令收集的是当前的情况,若想实时的一直查看服务器的状况,可使用“vmstat 刷新间隔(单位:秒)”表示隔多少秒显示一次实时运行结果,例如间隔3秒显示vmstat的结果,参考命令如下:
[root@minicc ~]# vmstat 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r b   swpd   free   buff cache   si   so    bi    bo   in   cs us sy id wa st
 0 0 963060 31568 108636 891540    0    0     2    20    1    0 0 0 100 0 0
 4 0 963060 31568 108636 891540    0    0     0    56 1018 16041 0 0 100 0 0
 1 0 963060 31568 108636 891540    0    0     0    16 1024 16003 0 0 100 0 0
1.3.9 查看进程信息:ps [–u 用户名]
         这个命令很常用,一般与kill命令配合使用,用于首先查看所需要杀掉的进程的id,接着使用kill命令将其杀掉。
         例如,查看sn用户下进程的运行情况,命令参考返回结果如下:
[sn@minicc ~]$ ps -u sn
 PID TTY          TIME CMD
13138 ?        00:00:00 ininit
13139 ?        00:00:00 sipgw
13140 ?        00:00:00 manager
13141 ?        00:00:00 scf
13142 ?        00:00:00 inesgateway
13143 ?        00:00:00 scf_sync
13144 ?        00:00:00 scf
18180 pts/5    00:00:00 bash
18368 pts/7    00:00:00 bash
18937 ?        00:00:00 sshd
18938 pts/17   00:00:00 bash
19486 pts/11   00:00:00 bash
19520 pts/11   00:00:00 ps
         第一列显示的就是进程的ID信息。
1.3.10 杀掉进程:kill [-9] 进程id
       
在有些应用程序出现问题,无法停止进程时,可使用kill命令将进程杀掉,一般使用“kill -9 进程ID”来进行强制杀掉。例如想杀掉1.3.9ID13138的进程,接着使用ps –u命令查看是否成功杀掉进程,参考运行结果如下:
[sn@minicc ~]$ kill -9 13138
[sn@minicc ~]$ ps -u sn    
 PID TTY          TIME CMD
13139 ?        00:00:00 sipgw
13140 ?        00:00:00 manager
13141 ?        00:00:00 scf
13142 ?        00:00:00 inesgateway
13143 ?        00:00:00 scf_sync
13144 ?        00:00:00 scf
18180 pts/5    00:00:00 bash
18368 pts/7    00:00:00 bash
18937 ?        00:00:00 sshd
18938 pts/17   00:00:00 bash
19486 pts/11   00:00:00 bash
19534 pts/11   00:00:00 ps
1.4 Linux网络命令
1.4.1 查看IP设置信息:ifconfig
       
root用户下(默认创建的其它用户没有执行该命令的权限)运行ifconfig命令,可查看当前Linux系统的IP、网关、子网掩码等设置信息,参考返回结果如下:
[root@minicc ~]# ifconfig
eth0      Link encap:Ethernet HWaddr xxxxxxxxx
          inet addr:192.168.2.132 Bcast:192.168.2.255 Mask:255.255.255.0
          ……

lo        Link encap:Local Loopback
          inet addr:127.0.0.1 Mask:255.0.0.0
         ……
1.4.2 设置LinuxIP
常用的修改Linux系统IP的方法有如下几种:
1)通过Linux图形界面,点击“网络”修改IP,这个是在能接触到图形界面时最常用的方式,笔者比较常用;
   (2)通过ifconfig命令,语法为(其中eth后的X表示网卡设备号,eth0表示网卡0):
ifconfig ethX IP地址 netmask 子网掩码
   例如,设置网卡0IP地址为192.168.2.18,子网掩码为255.255.2550,命令参考如下:
ifconfig eth0 192.168.2.18 netmask 255.255.255.0
    需要注意的是:该命令设置的IP在重启后失效,所以笔者一般采用下面第三种方式。
   (3)如果要修改网卡0IP信息,直接改/etc/sysconfig/network-scripts/ifcfg-eth0(如果有网卡1,它的IP信息在ifcfg-eth1文件中,以此类推)文件,例如该文件的参考配置:
DEVICE=eth0
BOOTPROTO=none
HWADDR=……
ONBOOT=yes
TYPE=Ethernet
NETMASK=255.255.255.0
IPADDR=192.168.2.132
GATEWAY=192.168.2.1
    其中GATEWAY表示网关地址,NETMASK表示子网掩码,IPADDR表示IP地址。
记住修改完成后需要重新启动网络才能生效,命令如下:
service network restart
   (4)通过setup可视命令,听说比较好用,但笔者用得比较少。
 笔者一般采用第13种方式。
1.4.3 FTP系列命令:ftp IP地址、bi、get、put、bye
    ftp命令的功能是在本地机和远程机之间传送文件。该命令的一般格式如下:、
ftp 主机名/IP
   例如,FTP192.168.2.131机器,用户名为acd,密码:xxxxxx,参考命令如下:
[sn@minicc ~]$ ftp 192.168.2.132
Connected to 192.168.2.132.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.2.132:sn): acd
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
FTP登录进去后,进入acd用户的home目录(/home/acd),可使用在该用户下能运行的所有Linux命令,例如cdpwdls等命令:
ftp> pwd
257 "/home/acd"
ftp> ls
227 Entering Passive Mode (192,168,2,132,211,179)
150 Here comes the directory listing.
-rw-r--r--    1 521      507             0 Jun 21 01:58 1.txt
drwxr-xr-x   11 521      507          4096 Dec 31 2010 cin
-rw-r--r--    1 521      507      15309921 Apr 07 02:01 cin.tar.gz
-rw-r--r--    1 521      507       3520190 May 26 08:27 numinfo.txt
226 Directory send OK.
ftp> cd cin
250 Directory successfully changed.
FTP命令主要用于从FTP机器获取文件(get命令),或将某个文件放到FTP连接上机器的目录上。在进行文件传输前,一般要运行bi(或binary)命令,将文档传送类型配置为二进制传输方式。
演示连接到FTP192.168.2.132)后,浏览连接到的用户的home目录(/home/acd)下的文件,切换文档传送类型为二进制方式(bi),接着将该目录下的numinfo.txt文件取下来(使用命令:get 文件名,取下来文件放置的目录为FTP命令执行前所在的目录,例如:/home/sn),而后将FTP命令执行前所在的目录(例如:/home/sn)下的amigo.txt文件通过put命令将其放到ftp机器的目录下。最后使用bye命令断开ftp连接,一连串ftp操作命令如下所示:
[sn@minicc ~]$ ftp 192.168.2.132
Connected to 192.168.2.132.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.2.132:sn): acd
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,2,132,20,34)
150 Here comes the directory listing.
-rw-r--r--    1 521      507             0 Jun 21 01:58 1.txt
drwxr-xr-x   11 521      507          4096 Dec 31 2010 cin
-rw-r--r--    1 521      507      15309921 Apr 07 02:01 cin.tar.gz
-rw-r--r--    1 521      507       3520190 May 26 08:27 numinfo.txt
226 Directory send OK.
ftp> bi
200 Switching to Binary mode.
ftp> get numinfo.txt
local: numinfo.txt remote: numinfo.txt
227 Entering Passive Mode (192,168,2,132,194,178)
150 Opening BINARY mode data connection for numinfo.txt (3520190 bytes).
226 File send OK.
3520190 bytes received in 0.11 seconds (3e+04 Kbytes/s)
ftp> put amigo.txt
local: amigo.txt remote: amigo.txt
227 Entering Passive Mode (192,168,2,132,153,215)
150 Ok to send data.
226 File receive OK.
341 bytes sent in 0.017 seconds (20 Kbytes/s)
ftp> ls
227 Entering Passive Mode (192,168,2,132,193,212)
150 Here comes the directory listing.
-rw-r--r--    1 521      507             0 Jun 21 01:58 1.txt
-rw-r--r--    1 521      507           341 Jul 26 12:12 amigo.txt
drwxr-xr-x   11 521      507          4096 Dec 31 2010 cin
-rw-r--r--    1 521      507      15309921 Apr 07 02:01 cin.tar.gz
-rw-r--r--    1 521      507       3520190 May 26 08:27 numinfo.txt
226 Directory send OK.
ftp> bye
221 Goodbye.
1.5 其它常用命令
1.5.1 文件编辑命令:vi 文件名
     Linux下有不少文本编辑命令,笔者最常用的是vi命令,例如,编辑所在目录的amigo.txt文本文件,所用命令为:
[sn@minicc ~]$ vi amigo.txt
     运行该命令后,此时是命令状态,若要进入编辑状态,按“i”键,接着像编辑文本文件一样编辑该文件,若编辑完毕后,若想要保存或舍弃编辑的文件信息,都需要按“Esc”切换到命令状态,在命令状态输入“:wq”表示保存信息并退出。输入“:q”或“:q!”取消保存文件信息。
     在命令行状态下,输入“d”删除一行,还有很多其它的命令,读者可以在网上查询该命令的详细使用信息。
1.5.2 打包命令:tar cvzf tar包名.tar.gz 打包的目录/ 

    打包和解包命令很常用,因为单个传输文件比较慢,一般需要进行打包,例如将amigo1121dir目录打包成:amigo1121dir_bak.tar.gz,命令参考运行结果为:
[sn@minicc ~]$ tar cvzf amigo1121dir_bak.tar.gz amigo1121dir/
amigo1121dir/
amigo1121dir/test111
amigo1121dir/test222/
1.5.3 解包命令:tar xvzf tar包名.tar.gz
若要将之前打包的amigo1121dir_bak.tar.gz解压缩到当前目录下,可使用如下命
tar xvzf tar amigo1121dir_bak.tar.gz