用本地linux通过ssh连接远程服务器

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

SSH

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

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

SSH有两个不兼容的版本 ,1.x  2.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

    或者使用 ssh 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" 拷贝文件和目录

     使用scp 需要要求 远程开启sshd 服务,即本地可以通过ssh 登陆远程主机。(不一定登陆,但要求能够登陆)

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



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值