Linux scp/ssh命令免密码登录

**解决的问题:**从服务器A无密码访问服务器B

ssh秘钥

服务器A
服务器B
在A上执行命令 ssh-keygen -t rsa,然后一路回车,最后会在 /root/.ssh/目录下生成 id_rsa 和 id_rsa.pub 文件,将id_rsa.pub 拷贝到服务器B的 /root目录下:
scp ~/.ssh/id_rsa.pub B:/root/
然后执行 通过 cat 命令 把id_rsa.pub追写到服务器B的.ssh目录下authorized_keys 文件中,命令如下:
cat id_rsa.pub >> .ssh/authorized_keys

这时候服务器A就可以无密访问服务器B,反过来,B访问A也同理。

如果执行scp命令的时候,遇到known_hosts错误,去.ssh目录下的known_hosts文件里删除掉你要访问机器的记录。

expect

先创建scp_expect.sh文件:

#!/usr/bin/expect
set timeout 200
set host [lindex $argv 0]
set username [lindex $argv 1] 
set password [lindex $argv 2] 
set src_file [lindex $argv 3]
set dest_file [lindex $argv 4]
spawn scp -r $username@$host:$src_file $dest_file
expect {
    "(yes/no)?"
    {
        send "yes\n"
        expect "*assword:" { send "$password\n"}
    }
    "*assword:"
    {
        send "$password\n"
    }
}
expect "100%"
expect eof

在脚本中调用scp_expect文件:

scp_expect.sh ${host} root ${password} ${src_file} ${dest_file}
这样就可以在脚本中直接调用scp命令,而不用被输入密码打断。ssh命令同理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值