具体需求:
在同一用户hequan下 实现 A 从本地分发数据到B。过程中不需要密码提示
创建用户
#useradd hequan # id hequan
#echo 123456 | passwd --stdin hequan
# su - hequan
RSA 既可以加密也,也可以数字签名
DSA 只能用于数字签名
开始创建密钥
[hequan@A ~]$ ssh-keygen -t dsa 默认RSA
Generating public/private dsa key pair.
Enter file in which to save the key (/home/hequan/.ssh/id_dsa):
Created directory '/home/hequan/.ssh'.
Enter passphrase (empty for no passphrase):
[hequan@A ~]$ ll -l .ssh/
总用量 8
-rw------- 1 hequan hequan 668 3月 28 04:07 id_dsa 私钥 保留
-rw-r--r-- 1 hequan hequan 598 3月 28 04:07 id_dsa.pub 公钥 分发
[hequan@A ~]$ ll -ld .ssh/
drwx------ 2 hequan hequan 4096 3月 28 04:07 .ssh/
分发公钥
格式: ssh-copy-id [-i [identity_file]] [user@]machine
[hequan@A ~]$ ssh-copy-id -i .ssh/id_dsa.pub [email protected] 分发
Are you sure you want to continue connecting (yes/no)? yes
.ssh/auhorized_keys
to make sure we haven't added extra keys that you weren't expecting.
[hequan@B ~]$ ll -l .ssh/
-rw------- 1 hequan hequan 598 4月 4 04:49 authorized_keys
[hequan@A ~]$ ssh [email protected] 不要密码
[hequan@B ~]$
测试发文件
[hequan@A ~]$ echo hequan > hequan.txt
[hequan@A ~]$ scp hequan.txt [email protected]:~
如果测试时,ssh特别慢,可以修改如下参数。
# vi /etc/ssh/sshd_config
UseDNS no
GSSAPIAuthentication no
# /etc/init.d/sshd restart
[hequan@A ~]$ scp -rp /etc/ [email protected]:~ 发送目录 到 ~
[hequan@A ~]$ scp -rp [email protected]:~/etc/ /tmp/ 把B的/etc/目录 拷到本机/tmp
免密码登陆小结:
免密码验证是单向的
基于用户的,最好不要跨用户
连接慢 (可以看上面的解决办法)
批量分发初始都需要输入一次密码,并且第一次连接要确认(expect)
[root@A ~]# ssh -v [email protected] -v 调试 整个连接过程
测试脚本
#!/bin/sh
if [ $# -ne 1 ]
then
echo "/bin/sh $0 arg1"
exit 1
fi
for n in 11
do
scp -rp $1 [email protected].$n:~;
done
批量分发批量处理 权限问题
visudo
hequan ALL=(ALL) NOPASSWD:/bin/cp
# visudo -c
/etc/sudoers:解析正确
远程sudo
# Disable "ssh hostname sudo <cmd>", because it will show the passwor
d in clear.
# You have to run "ssh -t hostname sudo <cmd>".
Defaults requiretty 或者注释掉这一条
$ scp -rp quan [email protected]:~ 先把quan拷贝到家目录,
$ ssh [email protected] -t sudo /bin/cp ~/quan /tmp 然后拷贝quan文件到 /tmp 最后是root权限
rsync
chmod u+s `which rsync` 有root的权限 suid
-rwsr-xr-x 1 root root 415000 10月 31 2013 /usr/bin/rsync
ssh [email protected] /usr/bin/rsync ~ /yy /tmp
小结:
利用root
利用visudo 推荐2
利用rsync
本文转自 295631788 51CTO博客,原文链接:http://blog.51cto.com/hequan/1762853,如需转载请自行联系原作者