nescafeboy1 发表于 2018-8-19 08:13:36

shell---scp远程传输文件不需要手动输入密码

1.通过sshpass让ssh记住密码实现ssh自动登陆  
(1)安装sshpass
  
sudo apt-get install sshpass
  
或者
  
下载sshpass-1.05.tar.gz
  
shell>tar xvf sshpass-1.05.tar.gz
  
shell>cd sshpass-1.05
  
shell>make && make install
  
(2)测试
  
shell>/usr/local/bin/sshpass -p 密码 ssh root@127.0.0.1
  
(3)设置避免公钥确认
  
ssh在首次链接时会提示公钥确定,这会导致某些自动化任务失败
  
shell>sudo vim /etc/ssh/ssh_config
  
##添加下面一句
  
StrictHostKeyChecking no
  
(4)把本机的~/examples.desktop传到192.168.1.1的~目录下
  
sshpass -p 123456 scp ~/examples.desktop root@192.168.1.1:~
  

  
2.通过expect传输文件
  
(1)安装expect
  
sudo apt-get install expect
  
(2)测试
  
把192.168.1.1的/home/test/soft.tar传输到本机的/home/test
  
#!/usr/bin/expect -f
  
#filename: scp_expect.sh
  

  
set password 123456
  
spawn scp -rtest@192.168.1.1:/home/test/soft.tar /home/test
  
set timeout 3
  
expect {
  
"yes/no" {send "yes\r";exp_continue}
  
}
  
set timeout 3
  
send "$password\r"
  
##传输需要的时间
  
set timeout 300
  
send "exit\r"
  
expect eof


页: [1]
查看完整版本: shell---scp远程传输文件不需要手动输入密码