Linux文件同步脚步,SSH免密码远程登录设置Linux

其实这个问题的网上、园子里已经有很多的博客介绍了,但多数都忽略了一个问题,就是生成公钥时是不要输入密码的,整理一下:

1. 有A,B两台机(Linux/unix), 要想从A用ssh远程登录到B上(假设各自的IP,A:192.168.100;B:192.168.1.104)。 

2. 在A机上,用“ssh-keygen -t rsa”命令生成公钥,注意这里一直回车就是了。好了,这时在“~/.ssh/”下就已经生成“id_rsa、id_rsa.pub”两个文件了。

3. 还在A机上,将刚才生成的id_rsa.pub文件复制到B机上,可以使用命令“scp ~/.ssh/id_rsa.pub [email protected]:/root/”,这时就把id_rsa.pub文件复制到B机的/root下了。

4. 用root用户登录到B机上,这时就可以看到刚刚复制过来的id_rsa.pub文件了,使用命令“cat id_rsa.pub >> ~/.ssh/authorized_keys” 将A机的公钥加入到authorized_keys文件,(有时~/下没有.ssh文件夹或没有authorized_keys文件,如果这样,自己手动创建就好了)。

5. 还在B机上,重启sshd服务,命令“service ssh restart”。

6. 回A机上,试试, 命令“ssh [email protected]”, 不出意外就无需密码登录进去了!

 

要注意的事项:

1. ssh-keygen -t rsa  生成公钥时一直回车不要输入密码,就是空密码。

2. 要用哪个用户远程登录就把id_rsa.pub复制到用户对应路径下,如:root用户就复制到/root/下; andychen用户就复制到/home/andychen/下,不要混了。

3. B机上的文件权限: .ssh文件夹(700);authorized_keys(600)。


#! /usr/bin/perl

use 5.020;
use strict;
use warnings;

#### config ####
my $ipListFile = "/home/castiel/config/jcIPList.txt";
my $srcDir = "~/jc";
my $dstDir = "~/";
my $user = "castiel";
#### config ####


#### sub ####

sub isIPAdress {
  shift =~ /[1-9]\d{0,2}\.\d{1,3}\.\d{1,3}\.\d{1,3}/;
}

sub sync {
  my $ip = shift;
  if (isIPAdress $ip) {
    my @rsync = `rsync -avr --exclude ".git*" --exclude "project*" $srcDir $user\@$ip:$dstDir`;
    say @rsync;
  } else {
    say "$ip not a valid IP address!";
  }
}

sub container {
  pipe(READER, WRITER);

  foreach (@_) {
    if (fork == 0) {
      close READER;
      select WRITER;
      $! = 1;
      say "child thread begin, id is: $$";

      chomp;
      sync $_;

      say "child thread end, ie is: $$";
      exit 0;
    }
  }

  close WRITER;
  say while ;
}

#### sub ####


#### main ####

say "main thread begin, id is: $$";

my @ipList = @ARGV;
if (@ipList == 0) {
  open(IPList, $ipListFile) or die "$ipListFile was not found!";
  while () {
    push @ipList, $_;
  }
}

container @ipList;

say "main thread end, id is $$";



转载: http://www.cnblogs.com/bootoo/p/5068514.html

你可能感兴趣的:(linux)