ssh
传统网络服务程序(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 -