SSH简介及配置使用SSH登陆远程主机

上一篇 / 下一篇  2008-11-30 22:15:13 / 个人分类:ssh 资料

  • 文件版本: V1.0
  • 开发商: 本站原创
  • 文件来源: 本地
  • 界面语言: 简体中文
  • 授权方式: 免费
  • 运行平台: Win9X/Win2000/WinXP
  传统的网络服务程序统,如:ftp、POP和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。

"A)wH&P[0从前,一个名为Tatu Yl?nen的芬兰程序员开发了一种网络协议和服务软件,称为SSH(Secure SHell的缩写)。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,虽然许多人把Secure Shell仅当作Telnet的替代物,但你可以使用它来保护你的网络连接的安全。你可以通过本地或远程系统上的Secure Shell转发其他网络通信,如POP、X、PPP和FTP。你还可以转发其他类型的网络通信,包括CVS和任意其他的TCP通信。另外,你可以使用带 TCP包装的Secure Shell,以加强连接的安全性。除此之外,Secure Shell还有一些其他的方便的功能,可用于诸如Oracle之类的应用,也可以将它用于远程备份和像SecurID卡一样的附加认证。

.}.Byk#wO2F0

1w]3j Zq6e0

"nku7p;y'nv z0

2.SSH的工作机制

2c`-~'LMyC051Testing软件测试网g T/Cw u*S%h

"J`$goQ2m}0SSH分为两部分:客户端部分和服务端部分。

-}o B i{K{U051Testing软件测试网 z u'V\:JK ~!W

服务端是一个守护进程(demon),他在后台运行并响应来自客户端的连接请求。服务端一般是sshd进程,提供了对远程连接的处理,一般包括公共密钥认证、密钥交换、对称密钥加密和非安全连接。51Testing软件测试网 b.y`z)ts#e]

a$Xf/g KR9bw3y0客户端包含ssh程序以及像scp(远程拷贝)、slogin(远程登陆)、sftp(安全文件传输)等其他的应用程序。

B0t.Iq-l^iP0

$o2CY;g'Jc@rV0他们的工作机制大致是本地的客户端发送一个连接请求到远程的服务端,服务端检查申请的包和IP地址再发送密钥给SSH的客户端,本地再将密钥发回给服务端,自此连接建立。刚才所讲的只是SSH连接的大致过程,SSH 1.x和SSH 2.x在连接协议上还有着一些差异。51Testing软件测试网{:P] aK

51Testing软件测试网F-O/p OKz*q)Z

SSH被设计成为工作于自己的基础之上而不利用超级服务器(inetd),虽然可以通过inetd上的tcpd来运行SSH进程,但是这完全没有必要。启动SSH服务器后,sshd运行起来并在默认的22端口进行监听(你可以用# ps -waux | grep sshd来查看sshd是否已经被正确的运行了)如果不是通过inetd启动的SSH,那么SSH就将一直等待连接请求。当请求到来的时候SSH守护进程会产生一个子进程,该子进程进行这次的连接处理。

dYd vU5t,tM3_051Testing软件测试网fP&KP4Pbh ? u

但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件,而且是免费的,

!_,`*s!}V \E051Testing软件测试网,Fa?J]AV8|9G*br

SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。

3fJ0FU ^+N"CV1t0

Bo5g GjW:P$]051Testing软件测试网{A~0sY,K

51Testing软件测试网nt0K xM*f8M'Sl

8hQ@ vH Ne0

3.安装使用OpenSSH

51Testing软件测试网 D~-cj R6N N

;Oh d^o5E'{051Testing软件测试网w+q`VWZ

这里主要讲的是基于FreeBSD的OpenSSH的配置,其它Unix及派生系统使用OpenSSH的方法大致相同FreeBSD中集成了 OpenSSH,在很多Linux的发行版中都没有包括OpenSSH。但是,可以从网络上下载并安装OpenSSH,他是完全免费的。(可以访问 OpenSSH的主页http://www.openssh.org51Testing软件测试网4sj??'_XA3Q5H

51Testing软件测试网7Ka?mB8[

生成密钥对51Testing软件测试网)nQo:PT

A%HZ'PI~m0使用ssh-keygen来生成密钥对,比如要用DSA加密算法生成一个4096Bit的密钥对可以输入如下命令(具体参数请参阅man ssh-keygen):51Testing软件测试网3lE-y'h$a#k

51Testing软件测试网3_E5j%s/s]c JE

#ssh-keygen -b 4096 -t dsa

y5S mH.g051Testing软件测试网:ep_(Nf3h2H)G1K;x9H;Y

\CWp5NcW0%ssh-keygen -b 4096 -t dsa51Testing软件测试网J%_p;W3x g a
51Testing软件测试网DLa N8Z2_

Generating public/private dsa key pair.51Testing软件测试网+RtYs"Hp s o&aO
Enter file in which to save the key (/home/fdy84/.ssh/id_dsa):
T}vV [#@([0
(密钥对将要存的路径,括号内为默认)
oH(C|r`f^d0Created directory '/home/fdy84/.ssh'.
%g,L+uLX#M C0Enter passphrase (empty for no passphrase):
V8Ts/J,^0(输入口令)51Testing软件测试网7],j|6VsP~
Enter same passphrase again:
]Mv o#}0(再次输入口令,千万不要忘记否则就只有从新生成密钥了)51Testing软件测试网WT$o9C;nOW } C
Your identification has been saved in /home/fdy84/.ssh/id_dsa.51Testing软件测试网K"JW%p)I#^sA
(你的私钥)51Testing软件测试网 Q,fxw$b1g"Dek
Your public key has been saved in /home/fdy84/.ssh/id_dsa.pub.51Testing软件测试网,g#n;Y(zT
(你的公钥)51Testing软件测试网,nte%?;cZ&P \oj
The key fingerprint is:
8r:d7Z3xFi?j lI0bb:1b:f5:1c:77:62:90:21:59:7e:c6:65:e5:24:c6:e5 fdy84@freebsd51Testing软件测试网7lhCPI

51Testing软件测试网a zbG8e(QL~:T

5H&D.m7N%k0密钥分发51Testing软件测试网0jqhQ/tV

{i9]I&uDJ0刚才生成了一对密钥,把私钥放在自己的机器上的~/.ssh/目录下并保证访问权限是“-rw-------”(即600)。再把生成的公钥放在要连接的远程主机的~/.ssh/目录下并改名为authorized_keys,并且保证文件除了属主外没有被人修改的权限。51Testing软件测试网+Tq0N^'tv&ju[j

51Testing软件测试网 `y E5S nQ

51Testing软件测试网 D V.s1I;@

4.配置使用SSH

c"?$TD#l ]051Testing软件测试网oo5xF(\&\4n

51Testing软件测试网 q5N~N T#w

配置服务端51Testing软件测试网QO$T"j%i&e8g

启动SSH服务端很简单只需要运行51Testing软件测试网 \/@T(Cl{OxKn
# sshd
51Testing软件测试网 H/~To h,J
就可以了。或者在/etc/rc.conf中加入
;] U#yg"@y {.j0sshd_enable="YES"
$wo"Z V;dLc0就可以在每次启动时自动运行SSH服务端了。
4k-N/GVXp aN0SSH服务端的配置使用的配置文件是“/etc/ssh/sshd_config”,并且OpenSSH1.x和2.x的服务器配置文件均为此文件。
/IIY'v x*W:e0

3d)[ hL2]g'b0配置客户端

0p{ Rft6T051Testing软件测试网&j2A5~M;t

客户端想连接远程服务器只需要输入
cC]6Rj0#ssh 域名(或ip)
L3h:zW%O1\7O4`B1h0就可以了51Testing软件测试网a]*C~#]

比如想以fdy84用户连接IP地址为192.168.0.6的一台远程服务器 需要键入
# ssh 192.168.0.6 -l fdy84
只要配置正确就可以连上远端的服务器了51Testing软件测试网+_;[(w_2{V?l

:p,ITZ]0

5.使用Windows下的SecureCRT进行SSH连接

51Testing软件测试网v8jX9F y8G

%o E2~^4S @4NId c^0

%r"}3oCeY0如果在Windows下想要通过SSH远程管理服务器怎么办?其实Windows有很多远程管理软件,我们在这主要介绍一下SecureCRT中SSH连接的使用。(以Version 4.1.1为准介绍)51Testing软件测试网&o*A,yyS%P9m

51Testing软件测试网1uw:{*lJP

Create Public Key...
{.G$AX4M4^0SecureCRT也可以生成密钥对,不过SecureCRT最大只支持2048Bit的密钥,点选Tools->Create Public Key...,选择密钥算法和密钥长度,输入完口令后再使劲晃鼠标以给它生成密钥的足够的随机量之后就等待计算机生成密钥对,如图

Q~A4DS0

u S3f3dv#d4A v051Testing软件测试网u6U/O.Y Z;MV2~4G+h

51Testing软件测试网'n]Z:fi,Yc6o

点选左上角的Connect按钮,开启Connect对话框

5G.cDYk{/k0

m5Vn/f(l$_h+v051Testing软件测试网'?.j \7Z/l n1tm

51Testing软件测试网&f"y5~,?-`7wf'd|(T!_K

再点击红圈所示的New Session按钮进入Session Options对话框

(V jwafL%m4\B051Testing软件测试网)m:_{I/c#M

51Testing软件测试网S ~umM k K

51Testing软件测试网Q'`w PV4kYV+m

在这里我们选择SSH连接,并填入要连接的主机名称(或者ip地址),用户名,再选择基于公钥方式的认证,点击Properties...进入密钥配置对话框51Testing软件测试网3PO_O*h"]:F

jwi*x1R&K x}0

?%X8W/|)_Z/D051Testing软件测试网YM c']Cd C7j

在红色圈所示的位置填入你的私钥文件。

6w1j|8R`4\"@E-V/NU051Testing软件测试网;z%aR\$k$e

现在点击刚才建立的那个连接进行SSH连接,根据提示点击几个对话框之后就连接上远程的服务器了,如图51Testing软件测试网O J3}5l+a^ Vx

51Testing软件测试网$le)Bt{

51Testing软件测试网-xL'Wyto$T*Ni

51Testing软件测试网QC(gw'kYd6WJ

特别要注意的是由SecureCRT生成的密钥对和用OpenSSH生成的密钥对在格式上不一样,而且二者都只能认识自己的密钥的格式,所以在用SecureCRT同OpenSSH连接时分别都要用它们自己的密钥格式,可以用任何一个方法生成然后使用ssh-keygen -i 把SecureCRT生成的的密钥转换成OpenSSH的密钥格式,或者用ssh-keygen -e把OpenSSH的密钥格式转换成SecureCRT能够识别的IETF SECSH格式

0G)cQ%SO-^"Mn0

*CUV+c$a%Vh0虽然SSH提供基于密码的登陆,不过基于安全考虑笔者并不推荐使用这种登陆,鉴于现在机器的速度普遍已经很快,推荐使用4096位的密钥以加强安全性。51Testing软件测试网Bf0P2y]

51Testing软件测试网 TG!jkY

 51Testing软件测试网3k)L0fzs3Q;b'u.o%E

2eo^ud9_0SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的"通道"。
:l!~ [A*gNJ'_051Testing软件测试网8n$WF [$LtU Q5{.k

P:?%x]%\X*^E0

t;W6dL7YEz)C051Testing软件测试网 n2t5w.x2Z1n

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

51Testing软件测试网'Fit B&X@

最初SSH是由芬兰的一家公司开发的。但是因为受版权和加密算法的限制,现在很多人都转而使用OpenSSH。OpenSSH是SSH的替代软件,而且是免费的,可以预计将来会有越来越多的人使用它而不是SSH。51Testing软件测试网|4Io~z4M'^/v
SSH是由客户端和服务端的软件组成的,有两个不兼容的版本分别是:1.x和2.x。用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x。51Testing软件测试网c3EDxo%{
SSH的安全验证是如何工作的
yT[R h#D2B051Testing软件测试网 is&g4A&g,ih o(z!V\
从客户端来看,SSH提供两种级别的安全验证。
B(M gkRD4i9PZQ0第一种级别(基于口令的安全验证)只要你知道自己帐号和口令,就可以登录到远程主机。所有传输的数据都会被加密,但是不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到"中间人"这种方式的攻击。51Testing软件测试网 O H8L$a#S
第二种级别(基于密匙的安全验证)需要依靠密匙,也就是你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的家目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密"质询"(challenge)并把它发送给客户端软件。客户端软件收到"质询"之后就可以用你的私人密匙解密再把它发送给服务器。51Testing软件测试网c Iv&[a Z*C)l'W}4[h
用这种方式,你必须知道自己密匙的口令。但是,与第一种级别相比,第二种级别不需要在网络上传送口令。51Testing软件测试网T8~L7STG
第二种级别不仅加密所有传送的数据,而且"中间人"这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒。51Testing软件测试网P2ZI)Yd2Q1L hx

O fs7UL[ l c?gz0安装并测试OpenSSH51Testing软件测试网}sqRT8O-p
51Testing软件测试网 b$\;BI)B:g
因为受到美国法律的限制,在很多Linux的发行版中都没有包括OpenSSH。但是,可以从网络上下载并安装OpenSSH(有关OpenSSH的安装和配置请参考:http://www.linuxaid.com.cn/engineer/brimmer/html/OpenSSH.htm)。51Testing软件测试网KOR+U-ax|T
安装完OpenSSH之后,用下面命令测试一下:
6wpw o"X7nU\0ssh -l [your accountname on the remote host] [address of the remote host]51Testing软件测试网SwN J7so%e7J*I
如果OpenSSH工作正常,你会看到下面的提示信息:51Testing软件测试网fWW tIG)F
The authenticity of host [hostname] can't be established.51Testing软件测试网"P%kH } f*O:CF](c
Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
|&aU*Q7x6Q0Are you sure you want to continue connecting (yes/no)?
Dd*~}:`#z/QZ0OpenSSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。键入"yes"。这将把这台主机的"识别标记"加到"~/.ssh/know_hosts"文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。
N7d W d(g8m4J2P:e0然后,SSH提示你输入远程主机上你的帐号的口令。输入完口令之后,就建立了SSH连接,这之后就可以象使用telnet那样使用SSH了。
U5y _;dwoab'JH0
u Q'B Bb _h0SSH的密匙
"og-{L9Mo%Mf4eM051Testing软件测试网Va"R[)H;R:s.e G
生成你自己的密匙对51Testing软件测试网j"io XlQ1Bm
51Testing软件测试网v`)O z v1p5p$Nzcn-M
生成并分发你自己的密匙有两个好处:
1~6bKdZ8q01) 可以防止"中间人"这种攻击方式51Testing软件测试网5p^B+C:E
2) 可以只用一个口令就登录到所有你想登录的服务器上
%_ S8Ut%_X0用下面的命令可以生成密匙:
g;S5jj6y(y0ssh-keygen
ns[)AO!XI`0如果远程主机使用的是SSH 2.x就要用这个命令:51Testing软件测试网dk0n;B F)[+c~|
ssh-keygen -d51Testing软件测试网6zj IdS&?GJ
在同一台主机上同时有SSH1和SSH2的密匙是没有问题的,因为密匙是存成不同的文件的。51Testing软件测试网 @/\?)[+x.y.| \g5g
ssh-keygen命令运行之后会显示下面的信息:51Testing软件测试网io'Xe` Iy
Generating RSA keys: ............................ooooooO......ooooooO51Testing软件测试网0K`%j0|C x*N
Key generation complete.
,ajL ~#[ _ko!`0Enter file in which to save the key (/home/[user]/.ssh/identity):51Testing软件测试网6v9]"u;oh-Y
[按下ENTER就行了]51Testing软件测试网 {7C2Nm?W#O9Dg;sA
Created directory '/home/[user]/.ssh'.51Testing软件测试网*X9V4?G U0TT%R*Q
Enter passphrase (empty for no passphrase):51Testing软件测试网:c0n$w {$?S}
[输入的口令不会显示在屏幕上]51Testing软件测试网sYhL1__"N"W
Enter same passphrase again:
e/?n{2U@`Jg0[重新输入一遍口令,如果忘记了口令就只能重新生成一次密匙了]51Testing软件测试网(gF-v l@ W7{`GtK:R
Your identification has been saved in /home/[user]/.ssh/identity.
L4f&E^`d$W0[这是你的私人密匙]51Testing软件测试网'pF"}f8W9i
Your public key has been saved in /home/[user]/.ssh/identity.pub.
-x9P0teR!U#\iju0The key fingerprint is: 2a:dc:71:2f:27:84:a2:e4:a1:1e:a9:63:e2:fa:a5:89 [user]@[local machine]51Testing软件测试网`3o!d2d u
"ssh-keygen -d"做的是几乎同样的事,但是把一对密匙存为(默认情况下)"/home/[user]/.ssh/id_dsa"(私人密匙)和"/home/[user]/.ssh/id_dsa.pub"(公用密匙)。51Testing软件测试网)y7R? w&x'Ze3w
现在你有一对密匙了:公用密匙要分发到所有你想用ssh登录的远程主机上去;私人密匙要好好地保管防止别人知道你的私人密匙。用"ls -l ~/.ssh/identity"或"ls -l ~/.ssh/id_dsa"所显示的文件的访问权限必须是"-rw-------"。51Testing软件测试网w8A C OJ|H!L_
如果你怀疑自己的密匙已经被别人知道了,不要迟疑马上生成一对新的密匙。当然,你还要重新分发一次公用密匙。
%C.~n9q#y4Iy"u0
]e6Y8Jj+X2m-wp3]:Y K0分发公用密匙
-m;v;f` [3x a9L/M,[m051Testing软件测试网,?&Xv&X r2W*]nm
在每一个你需要用SSH连接的远程服务器上,你要在自己的家目录下创建一个".ssh"的子目录,把你的公用密匙"identity.pub" 拷贝到这个目录下并把它重命名为"authorized_keys"。然后执行:
M.d ja'b|0bw&W1}3E0chmod 644 .ssh/authorized_keys
+StWM!tg;b0这一步是必不可少的。如果除了你之外别人对"authorized_keys"文件也有写的权限,SSH就不会工作。51Testing软件测试网.pe3D+Z2j;Gf1z&s
如果你想从不同的计算机登录到远程主机,"authorized_keys"文件也可以有多个公用密匙。在这种情况下,必须在新的计算机上重新生成一对密匙,然后把生成的"identify.pub"文件拷贝并粘贴到远程主机的"authorized_keys"文件里。当然在新的计算机上你必须有一个帐号,而且密匙是用口令保护的。有一点很重要,就是当你取消了这个帐号之后,别忘了把这一对密匙删掉。51Testing软件测试网lECv,k(B:oG6o

'cFe`%C q U7FgJv0配置SSH51Testing软件测试网T!k3Q/} J K

aKtl |z-v0配置客户端的软件51Testing软件测试网's{!?'h,E
51Testing软件测试网U*Q$eW3a$y {|
OpenSSH 有三种配置方式:命令行参数、用户配置文件和系统级的配置文件("/etc/ssh/ssh_config")。命令行参数优先于配置文件,用户配置文件优先于系统配置文件。所有的命令行的参数都能在配置文件中设置。因为在安装的时候没有默认的用户配置文件,所以要把 "/etc/ssh/ssh_config"拷贝并重新命名为"~/.ssh/config"。
[c(T3wJx0标准的配置文件大概是这样的:
/Z0e,~c I0[lots of explanations and possible options listed]51Testing软件测试网z,NG1yu L-q,p
# Be paranoid by default51Testing软件测试网B5V B\U]jf
Host *51Testing软件测试网nm f#So8D
ForwardAgent no51Testing软件测试网 T jK(B.]k%C
ForwardX11 no
$QvwoP1q0FallBackToRsh no51Testing软件测试网@L0Sl8gf2s6VK
还有很多选项的设置可以用"man ssh"查看"CONFIGURATION FILES"这一章。51Testing软件测试网3je3I\,z H!nAO
配置文件是按顺序读取的。先设置的选项先生效。51Testing软件测试网n7YS#]b"FS8C
假定你在www.foobar.com上有一个名为"bilbo"的帐号。而且你要把"ssh-agent"和"ssh-add"结合起来使用并且使用数据压缩来加快传输速度。因为主机名太长了,你懒得输入这么长的名字,用"fbc"作为"www.foobar.com"的简称。你的配置文件可以是这样的:
\v8z!`8^X!l*y[s0Host *fbc
+G3D%x7v5s5U3P+b._0HostName www.foobar.com
2]/Dn6R4C0NE0User bilbo
"Xkt|4\ k,tTKz0ForwardAgent yes51Testing软件测试网T t1VrH }$P
Compression yes51Testing软件测试网7Xia'C9J5MO
# Be paranoid by default51Testing软件测试网Se Mtgy
Host *
"Z4e1[N.s` S0ForwardAgent no
dU c8p`*T0ForwardX11 no51Testing软件测试网~k/k1{#_{
FallBackToRsh no51Testing软件测试网7pw n2ys6]tX0M
你输入"ssh fbc"之后,SSH会自动地从配置文件中找到主机的全名,用你的用户名登录并且用"ssh-agent"管理的密匙进行安全验证。这样很方便吧!51Testing软件测试网0q8{%[:n_O
用SSH连接到其它远程计算机用的还是"paranoid(偏执)"默认设置。如果有些选项没有在配置文件或命令行中设置,那么还是使用默认的"paranoid"设置。
:W+~3k US+\yD0在我们上面举的那个例子中,对于到www.foobar.com的SSH连接:"ForwardAgent"和"Compression"被设置为 "Yes";其它的设置选项(如果没有用命令行参数)"ForwardX11"和"FallBackToRsh"都被设置成"No"。51Testing软件测试网I8C5f:_t M-J&Z
其它还有一些需要仔细看一看的设置选项是:51Testing软件测试网hh\6v6e
l CheckHostIP yes
0Myz9]"h Oor0这个选项用来进行IP地址的检查以防止DNS欺骗。
0t ZQ^.o?#a.n0l CompressionLevel
;?W x7~d)}-v5r-P-[ J)Y0压缩的级别从"1"(最快)到"9"(压缩率最高)。默认值为"6"。
)^y M X.n C)ET&yX0l ForwardX11 yes51Testing软件测试网$p%k6d"F$]
为了在本地运行远程的X程序必须设置这个选项。
)c6W&SOl @(B0v6T4?0l LogLevel DEBUG51Testing软件测试网qm.Iy4E0eFg8^
当SSH出现问题的时候,这选项就很有用了。默认值为"INFO"。
+\6{~!r#je.w ]0
a4[2JG6I|x+kL0配置服务端的软件
w+pmAX@}N5H0
I8UN z*no3r?0p0SSH服务器的配置使用的是"/etc/ssh/sshd_config"配置文件,这些选项的设置在配置文件中已经有了一些说明而且用"man sshd"也可以查看帮助。请注意OpenSSH对于SSH 1.x和2.x没有不同的配置文件。
k ?t5O oK f%_'xv0在默认的设置选项中需要注意的有:
5ev*UI1{9?S0l PermitRootLogin yes51Testing软件测试网Bac#l|?6xGw*]P a!W
最好把这个选项设置成"PermitRootLogin without-password",这样"root"用户就不能从没有密匙的计算机上登录。把这个选项设置成"no"将禁止"root"用户登录,只能用"su"命令从普通用户转成"root"。
j(qQxjw8nA0l X11Forwarding no
RR7@'Vbb7A2J O7H0把这个选项设置成"yes"允许用户运行远程主机上的X程序。就算禁止这个选项也不能提高服务器的安全因为用户可以安装他们自己的转发器(forwarder),请参看"man sshd"。
{w+O)H8c0QU0l PasswordAuthentication yes51Testing软件测试网;n5~2j/z'I
把这个选项设置为"no"只允许用户用基于密匙的方式登录。这当然会给那些经常需要从不同主机登录的用户带来麻烦,但是这能够在很大程度上提高系统的安全性。基于口令的登录方式有很大的弱点。
f5A R3k@'q+S*\E0l # Subsystem /usr/local/sbin/sftpd51Testing软件测试网Q5Yr/|!|NeO
把最前面的#号去掉并且把路径名设置成"/usr/bin/sftpserv",用户就能使用"sftp"(安全的FTP)了(sftpserv在sftp 软件包中)。因为很多用户对FTP比较熟悉而且"scp"用起来也有一些麻烦,所以"sftp"还是很有用的。而且2.0.7版本以后的图形化的ftp工具"gftp"也支持"sftp"。
Nb]-j0uV(U0
+I%E1y/M1Kx0拷贝文件
y.`QC:MX4eit jn@ m051Testing软件测试网8~mv}t x/vV"D
用"scp"拷贝文件
0]4fy%{B} F4]0
'h2K r!v5U7F*B0SSH提供了一些命令和shell用来登录远程服务器。在默认情况下它不允许你拷贝文件,但是还是提供了一个"scp"命令。51Testing软件测试网7~$lZ Z0]'`Lm
假定你想把本地计算机当前目录下的一个名为"dumb"的文件拷贝到远程服务器www.foobar.com上你的家目录下。而且你在远程服务器上的帐号名为"bilbo"。可以用这个命令:
gk-K(d!`0scp dumb bilbo@www.foobar.com:.
ZG8v%z0D:K3x0把文件拷贝回来用这个命令:
4j*Ai5{~9Vad0scp bilbo@www.foobar.com:dumb .51Testing软件测试网@_"J(FE
"scp"调用SSH进行登录,然后拷贝文件,最后调用SSH关闭这个连接。51Testing软件测试网2TH FYd!J)r O
如果在你的"~/.ssh/config"文件中已经为www.foobar.com做了这样的配置:
D0~D s,{ w1u0Host *fbc
3Bh`%A.{ og0s Q0HostName www.foobar.com51Testing软件测试网Q2bUP&O~
User bilbo
[#u,g?R*E&kYG0ForwardAgent yes51Testing软件测试网6^[?]-tT:{
那么你就可以用"fbc"来代替"bilbo@www.foobar.com",命令就简化为"scp dumb fbc:."。
8]&xC8v Y q)T0"scp"假定你在远程主机上的家目录为你的工作目录。如果你使用相对目录就要相对于家目录。
+P?;r.Iw6|0用"scp"命令的"-r"参数允许递归地拷贝目录。"scp"也可以在两个不同的远程主机之间拷贝文件。51Testing软件测试网do2I.]b?^S o
有时候你可能会试图作这样的事:用SSH登录到www.foobar.com上之后,输入命令"scp [local machine]:dumb ."想用它把本地的"dumb"文件拷贝到你当前登录的远程服务器上。这时候你会看到下面的出错信息:
}lF}d0ssh: secure connection to [local machine] refused
E*|9P"dmv'S0之所以会出现这样的出错信息是因为你运行的是远程的"scp"命令,它试图登录到在你本地计算机上运行的SSH服务程序……所以最好在本地运行"scp"除非你的本地计算机也运行SSH服务程序。51Testing软件测试网Vf L#iUvY-}go

S,pdsrb0用"sftp"拷贝文件51Testing软件测试网M*R"WB'ap%Y^

2ce&X/Lr9MH;\0如果你习惯使用ftp的方式拷贝文件,可以试着用"sftp"。"sftp"建立用SSH加密的安全的FTP连接通道,允许使用标准的ftp命令。还有一个好处就是"sftp"允许你通过"exec"命令运行远程的程序。从2.0.7版以后,图形化的ftp客户软件"gftp"就支持"sftp"。51Testing软件测试网P,F8Vt}3yz5i$Y
如果远程的服务器没有安装sftp服务器软件"sftpserv",可以把"sftpserv"的可执行文件拷贝到你的远程的家目录中(或者在远程计算机的 $PATH环境变量中设置的路径)。"sftp"会自动激活这个服务软件,你没有必要在远程服务器上有什么特殊的权限。51Testing软件测试网t~PG lQ?
51Testing软件测试网Q9];}3o(Mm-Hz
用"rsync"拷贝文件
+{IVL/N5Q5B0
d/s[0ty%v1Q0"rsync" 是用来拷贝、更新和移动远程和本地文件的一个有用的工具,很容易就可以用"-e ssh"参数和SSH结合起来使用。"rsync"的一个优点就是,不会拷贝全部的文件,只会拷贝本地目录和远程目录中有区别的文件。而且它还使用很高效的压缩算法,这样拷贝的速度就很快。
f6AeOE0
,B1zG$? m(KU c0用"加密通道"的ftp拷贝文件51Testing软件测试网hRg1z8uz-qd

3D7G._"Ae'C]0如果你坚持要用传统的FTP客户软件。SSH可以为几乎所有的协议提供"安全通道"。FTP是一个有一点奇怪的协议(例如需要两个端口)而且不同的服务程序和服务程序之间、客户程序和客户程序之间还有一些差别。
/z@p#I i0实现"加密通道"的方法是使用"端口转发"。你可以把一个没有用到的本地端口(通常大于1000)设置成转发到一个远程服务器上,然后只要连接本地计算机上的这个端口就行了。有一点复杂是吗?51Testing软件测试网9xC\5e:f C
其实一个基本的想法就是,转发一个端口,让SSH在后台运行,用下面的命令:
#@;n ?x4__)q/Eq#T0ssh [user@remote host] -f -L 1234:[remote host]:21 tail -f /etc/motd
5ZV+Rk)bQ*X$E?:Eb0接着运行FTP客户,把它设置到指定的端口:
0`%]"\k9NVEO0lftp -u [username] -p 1234 localhost51Testing软件测试网$N*e*i1V*y aJ ]
当然,用这种方法很麻烦而且很容易出错。所以最好使用前三种方法。51Testing软件测试网H4j9c(|,H
51Testing软件测试网J"n#x r#m{
用SSH设置"加密通道"
z(?"~2Y3uBn051Testing软件测试网x4KO~ A.s/n0Gm
"加密通道"的基础知识51Testing软件测试网4f D5aa2[/siUp
51Testing软件测试网a8r X4aHQ(u1H|
SSH 的"加密通道"是通过"端口转发"来实现的。你可以在本地端口(没有用到的)和在远程服务器上运行的某个服务的端口之间建立"加密通道"。然后只要连接到本地端口。所有对本地端口的请求都被SSH加密并且转发到远程服务器的端口。当然只有远程服务器上运行SSH服务器软件的时候"加密通道"才能工作。可以用下面命令检查一些远程服务器是否运行SSH服务:51Testing软件测试网^KUq!SARy [#h
telnet [full name of remote host] 22
!|s A&Qi{ea0如果收到这样的出错信息:51Testing软件测试网6c X$z'\F"_MV k
telnet: Unable to connect to remote host: Connection refused
X B;L7V2|?0就说明远程服务器上没有运行SSH服务软件。51Testing软件测试网C5l%o)P#I)h7o
端口转发使用这样的命令语法:51Testing软件测试网7A7D~,iMp6d,YxU&m2a
ssh -f [username@remote host] -L [local port]:[full name of remote host]:[remote port] [some command]51Testing软件测试网`&R1\\u C)VY
你不仅可以转发多个端口而且可以在"~/.ssh/config"文件中用"LocalForward"设置经常使用的一些转发端口。51Testing软件测试网S)o Y j-j
51Testing软件测试网L:T%S;l+at$mf
为POP加上"加密通道"51Testing软件测试网j#K I~4ocnD
51Testing软件测试网!a1@n&l@wAJ
你可以用POP协议从服务器上取email。为POP加上"加密通道"可以防止POP的密码被网络监听器(sniffer)监听到。还有一个好处就是SSH的压缩方式可以让邮件传输得更快。51Testing软件测试网y0UM*g`a;a1qD
假定你在pop.foobar.com上有一个POP帐号,你的用户名是"bilbo"你的POP口令是"topsecret"。用来建立SSH"加密通道"的命令是:
(i D.V1i&H0ssh -f -C bilbo@pop.foobar.com -L 1234:pop.foobar.com:110 sleep 5
$kE$^)jA rWTyr0(如果要测试,可以把"sleep"的值加到500)。运行这个命令之后会提示你输入POP口令:
*[7a+LPB!eWfc0bilbo@pop.foobar.com's password:
V*h#UW-UB7V0输入口令之后就可以用"telnet"连接到本地的转发端口了。
.G~CDIr-A0telnet localhost 1234
0v2c7vHP9CY0你会收到远程mail服务器的"READY"消息。51Testing软件测试网v$W*|5vzR&q,\
当然,这个方法要求你手工输入所有的POP命令,这是很不方便的。可以用Fetchmail(参考how to configure Fetchmail)。Secure POP via SSH mini-HOWTO、man fetchmail和在"/usr/doc/fetchmail-[…]"目录下的Fetchmail的FAQ都提供了一些具体的例子。51Testing软件测试网&@;u.?I0|bl7O|6]
请注意IMAP协议使用的是不同的端口:IMAP v2的端口号为143而IMAP v3的端口号为220。
/w4e/w&n^lHj(Kv:E0
J1J%TP Xty0为X加上"加密通道"
k9` u;K)P#c hux:zJ0
}U},B2B.Y s/xIW0如果你打算在本地计算机上运行远程SSH服务器上的X程序,那么登录到远程的计算机上,创建一个名为"~/.ssh/environment"的文件并加上这一行:51Testing软件测试网y+^MAy^%ogz
XAUTHORITY=/home/[remote user name]/.Xauthority51Testing软件测试网9du)~7a1R
(如果在远程主机上你的家目录下不存在".Xauthority"这个文件,那么当用SSH登录的时候就会自动创建)。51Testing软件测试网[*{2_ HEF n8^
比如启动一个X程序(xterm)可以这个命令:51Testing软件测试网p6_oW wUz5D
ssh -f -X -l [remote user name] [remote machine] xterm51Testing软件测试网9wqK%xLu)s)r
这将在远程运行xterm这个程序。其它的X程序也是用相同的方法。
$mr.M1Kf+yN0
(t v9}:\;u1V5R0为linuxconf加上"加密通道"
!G;W_ }&Mo051Testing软件测试网 kv%LdA4Q w,ki
Linuxconf(http://www.solucorp.qc.ca/linuxconf/)是Linux的配置工具,它支持远程管理。Linuxconf的FAQ重说明了如何通过SSH使用linuxconf:
'Vth.o8gHK0其命令为:
US"Z+TsNdy4J0remadmin --exec [link_command] linuxconf --guiproto51Testing软件测试网1oD9Vp L1V ]
如果你想在两台计算机之间用加密的方式传送信息,那么最好用ssh。命令是:
cP8T oe's0remadmin --exec ssh -l [account] linuxconf --guiproto
'QJhU7G8Q*{;g0这是非常有效的而且运行用图形界面管理计算机。51Testing软件测试网8aA-Y5u%`Qu/w
这种方法需要在客户端安装linuxconf。其它的方法还有直接登录到服务器上用"X11Forwarding"或字符界面运行linuxconf。
N?'a2x}_051Testing软件测试网 t~M3?5XeF
为Webmin加上"加密通道"
$wP-kY#k%E@)`051Testing软件测试网4z^#x6Y `z \
Webmin(http://www.webmin.com/webmin/)是一个新的基于浏览器的配置工具。它运行在1000端口。你可以用SSH的"端口转发"对它进行加密:51Testing软件测试网'p9lZ;QE)r
ssh -f -l [remote user name] [remote host] -L 1234:[remote host]:10000 tail -f /etc/motd
6x+e,L/r:}$G3hka0把浏览器指向
|v ^(}N0http://localhost:1234
.WGFG J:C6G2N8D0版权说明51Testing软件测试网j4j:ewC h

TAG:

 

评分:0

我来说两句

Open Toolbar