ssh

Posted on Sep 6, 2015

传统网络服务程序(ftp/telnet/…)本质上是不安全的,使用明文传输口令和数据,可以被截获。
安全验证方式也有其弱点,容易受到“中间人”攻击。

ssh可以:

  • 把把传输的数据进行安全加密。
  • 数据经过压缩传输,更快。

ssh应用

  • slogin/ssh/scp/sftp

ssh远程登录

  • 基于口令(用户名/密码认证)
  • 基于密匙(公钥/私钥认证)
    • ssh-keygen 生成密匙对
    • 对私钥的加密,防止私钥被盗。
    • ssh-agent/ssh-add 密匙高速缓存
    • ~/.ssh/config 管理链接

总结:

telnet/ftp  : 不安全    
    |  
ssh :加密传输,密码认证麻烦
    |  
密匙认证(ssh-keygen):私钥丢失的话危害极大  
    |  
私匙加密:每次输入麻烦  
    |  
ssh-agent:高速缓存解密后的key  
    |  
keychain(永久存储解密后的密钥)
    | 
共享链接

ssh_config 管理链接

  • 可以给需要链接的远程机器取别名,登录更方便
  • 需要连接到同一台机器多次时,可以配置链接共享,减少链接资源以及每次链接等待的时间

~/.ssh/config配置示例

Host *
    ControlMaster auto
    ControlPath /tmp/ssh_%h_%p_%r.rc
Host vpc
    HostName vpc.xxx.com
    Port 22
    User caiyili
    IdentityFile ~/.ssh/caiyili.pem

Host dev
    HostName 172.16.2.9
    User caiyili
    Port 22
    ForwardAgent no
    ProxyCommand ssh -i ~/.ssh/caiyili.pem caiyili@vpc.xxx.com -W %h:%p

远程命令执行

  • 多台机器上执行同一命令
#!/bin/sh

cmd=${1:-"pwd"}
for m in `cat machine.txt`; do 
    echo "=====$m cmd:'$cmd'===="
    ssh $m "$cmd"
done
  • diff本机和远程机器文件
ssh user@host cat /path/to/file | diff /path/to/localfile -