Chinaunix首页 | 论坛 | 博客
  • 博客访问: 111687
  • 博文数量: 19
  • 博客积分: 1716
  • 博客等级: 上尉
  • 技术积分: 275
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-25 14:03
文章分类

全部博文(19)

文章存档

2011年(8)

2010年(11)

我的朋友

分类: LINUX

2010-10-15 15:31:09

SSH

传统的网络服务程序,FTP,POP,TELNET等在本质上都是不安全的,因为他们在网络上使用明文传送口令和数据.别有用心的人非常容易截获这些口令和数据.而且这些服务程序的安全验证方式也是有弱点的.就是很容易收到"中间人"冒充真正服务器接收你传给服务器的数据.然后在冒充你把数据传给真的服务器.

SSH的全称是Secure SHell.通过使用SSH,你可以将所有传输的数据加密.这样"中间人"这种方式就不可能实现了.而且也能够防止DNSIP欺骗.还有额外的好处就是数据是经过压缩的,传输速度块.SSH具有很多功能,可以作为TELNET的替代品,也可以为FTP,POP甚至PPP提供一个安全"通道.

SSH有两个不兼容的版本,1.x2.x;使用SSH2.x的客户端是不能够连接到SSH1.x上的.OpenSSH同时支持这两种版本.

SSH的安全验证机制

SSH的安全验证从客户端来看,提供两种级别的安全验证.

1. >>>>基于口令的安全验证<<<<

只要你知道自己的账号和口令,就可以登录到远程主机.所有传输的数据会被加密,但不能保证你正在连接的服务器就是你想连接的服务器.可能会有别的服务器正在冒充真的服务器,也就是会受到"中间人"的攻击.

2. >>>>基于密钥的安全验证<<<<

需要依靠密钥,也就是你必须为自己创建一对密钥,并将公钥放在需要需要访问的服务器上.如果你连接到SSH服务器,客户端软件就会向服务器发出请求,请求用你的密钥进行安全验证.服务器收到请求后,先在该服务器的home目录下寻找你的公用密钥,然后把它和你发来的公用密钥进行比较.如果两个密钥一致,服务器就用公用密钥加密"质询"并把它发给客户端.客户端收到"质询"后就可以用你的私人密钥解密在将其发给服务器.这种方式必须知道自己的密钥口令.

安装测试OpenSSH - 测试系统Ubuntu10.04

    sudo apt-get install openssh-client ;安装SSH客户端

    sudo apt-get install openssh-server ;安装SSH服务器端

    sudo /etc/init.d/ssh restart          ;启动SSH服务

    netstat -tlp                             ;测试SSH服务.出现一下信息,说明SSH配置成功.

    tcp 0 0 *:ssh *:* LISTEN -

    tcp6 0 0 [::]:ssh [::]:* LISTEN -

先在可以尝试第一次连接,连接命令如下:

    ssh -l USERNAME HOSTIP

    ;连接命令,USERNAME为用户名,HOSTIP为主机IP,第一次连接显示如下信息:

    The authenticity of host '192.168.3.194 (192.168.3.19)' can't be established.RSA key

    fingerprint is e1:ef:04:1c:37:c4:f7:c1:98:1d:a5:0d:f4:ca:50:af.Are you sure you

    want to continue connecting (yes/no)? yes 

    ;SSH告知用户,这个主机不能识别,这时键入"yes",SSH就会将相关信息,写入"~/.ssh/know_hosts",

    ;再次访问,就不会有这些信息了.然后输入完口令,就可以登录到主机了.

SSH密钥的创建

生成和分发SSH密钥,过程如下

    /.ssh# ssh-keygen    ;生成密钥

    Generating public/private rsa key pair.

    Enter file in which to save the key (/home/birdy/.ssh/id_rsa): ;输入回车

    Enter passphrase (empty for no passphrase): ;输入密码

    Enter same passphrase again: ;再次输入

    Your identification has been saved in /home/birdy/.ssh/id_rsa.;保存为id_rsa

    Your public key has been saved in /home/birdy/.ssh/id_rsa.pub.;保存为id_rsa.pub

    The key fingerprint is:

    ;[内容]

    The key's randomart image is:

    ;[内容]

    /.ssh# ssh-keygen -d ;如果是SSH2.x用该命令生成

    Generating public/private dsa key pair.

    Enter file in which to save the key (/home/birdy/.ssh/id_dsa):

    Enter passphrase (empty for no passphrase):

    Enter same passphrase again:

    Your identification has been saved in /home/birdy/.ssh/id_dsa.

    Your public key has been saved in /home/birdy/.ssh/id_dsa.pub.

    The key fingerprint is:

    ;[内容]

    The key's randomart image is:

    ;[内容]

    birdy@birdy-desktop:~/.ssh$

为了防止别人知道你的密钥,定期的重新更新并分发密钥,创建好密钥后,你的主目录下应该有下面的文件,私钥的权限为'-rw-------',公钥的权限为'-rw-r--r--'否则你的SSH就不会工作.

而在你不再会去使用SSH服务的时候(比如,你换了一台主机),记得要删除他们.

如果你创建的密钥文件不再主目录下的.ssh目录下,要将他们拷贝进去并保证正确的文件权限

    birdy@birdy-desktop:~/.ssh$ ll

    总用量 20

    -rw------- 1 birdy birdy  736 2010-10-15 13:44 id_dsa

    -rw-r--r-- 1 birdy birdy  609 2010-10-15 13:44 id_dsa.pub

    -rw------- 1 birdy birdy 1743 2010-10-15 13:44 id_rsa

    -rw-r--r-- 1 birdy birdy  401 2010-10-15 13:44 id_rsa.pub

    -rw-r--r-- 1 birdy birdy  442 2010-10-15 10:55 known_hosts

SSH配置

SSH安装的时候,没有默认的用户配置文件,不过我们可以自己加.如果你要登陆192.168.3.11上的linux用户,你可以键入"ssh -l linux 192.168.3.11"下面介绍一下简化这个命令的方法.

~/.ssh下建立文件config编写一下内容:

    Host *linux

    HostName 192.168.3.11

    User linux

在命令行运行"ssh linux"就可以登录192.168.3.11:linux.

当然,还有更多别的选项,ForwardAgent, Compression, ForwardX11 FallBackToRsh.这里就不罗列了.man一下,应该都有了.

"scp"拷贝文件和目录

SSH提供了一些命令和shell用来登录远程服务器.在默认情况下,不允许你拷贝文件,但还是提供了一个"scp"命令,使用方法如下:

    ;本地文件复制到远程

    scp FileName RemoteUserName@RemoteHostIp:RemoteFile

    scp FileName RemoteHostIp:RemoteFolder

    scp FileName RemoteHostIp:RemoteFile

    ;本地目录复制到远程

    scp -r FolderName RemoteUserName@RemoteHostIp:RemoteFolder

    scp -r FolderName RemoteHostIp:RemoteFolder

    ;远程文件复制到本地

    scp RemoteUserName@RemoteHostIp:RemoteFile FileName

    scp RemoteHostIp:RemoteFolder FileName

    scp RemoteHostIp:RemoteFile FileName

    ;远程目录复制到本地

    scp -r RemoteUserName@RemoteHostIp:RemoteFolder FolderName

    scp -r RemoteHostIp:RemoteFolder FolderName

阅读(9308) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-10-16 15:14:23

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com