最近一直都在纠结怎么用本地的linux连接远程的服务器   哈哈哈  在网上找到了一个资料   然后就成功了   记录下,linux还可以这样玩  哈哈



 


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的安全验证从客户端来看 , 提供两种级别的安全验证 .



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



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



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



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



 







OpenSSH  -  测试系统Ubuntu10.04





 







安装 SSH 客户端





安装 SSH 服务器端



启动 SSH 服务



测试 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  
 
  
告知用户 , 这个主机不能识别 , 这时键入 "yes",SSH 就会将相关信息 , 写入 "~/.ssh/know_hosts" 中 ,
 
  
再次访问 , 就不会有这些信息了 . 然后输入完口令 , 就可以登录到主机了 .
 
  

      
  
 
  
 
 
  
 
    
  
 
  
密钥的创建
 
  
 
    
  
 
  
生成和分发SSH 密钥 , 过程如下
 
  
生成密钥
 
  
    Generating public/private rsa key pair. 
 
  
输入回车
 
  
输入密码
 
  
再次输入
 
  
保存为 id_rsa
 
  
保存为 id_rsa.pub
 
  
    The key fingerprint is: 
 
  
内容 ]
 
  
    The key's randomart p_w_picpath is: 
 
  
内容 ]
 
  
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 p_w_picpath 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安装的时候 , 没有默认的用户配置文件 , 不过我们可以自己加 . 如果你要登陆 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


转载于:https://blog.51cto.com/6728496/1187772