Linux-linux scp命令无需输入密码的配置

Linux-linux scp命令无需输入密码的配置

虐人心 发布于 2017-06-04 字数 163 浏览 1288 回复 2

scp命令可以用来在若干个服务器之间拷贝文件,但是每次都提示要输入密码,有的时候脚本里需要一些远处拷贝,自动化执行需要没有密码输入提示的SCP过程,请问如何设置?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浮生未歇 2017-10-19 2 楼

这里假设主机A用来获到主机B的文件。
在主机A上执行如下命令来生成配对密钥:

ssh-keygen -t rsa

显示信息如下:

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory ‘/root/.ssh’.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
45:13:ec:31:f9:3d:25:54:7b:5f:03:40:ba:e9:76:cd root@bindiry-ubuntu

按三次回车。
为 ~/.ssh 目录设置权限:

 chmod -R 755 .ssh

将 .ssh 目录中的 id_rsa.pub 文件复制到 主机B 的 ~/.ssh/ 目录中,并改名为 authorized_keys ,同样给该目录设置权限。
到主机A中执行命令和主机B建立信任,例(假设主机B的IP为:192.168.0.3):

 scp ~/.ssh/id_rsa.pub 192.168.0.3:/root/.ssh/authorized_keys

下面就可以用scp命令不需要密码来获取主机B的文件了
希望对你有所帮助

答案出自http://my.oschina.net/captaintheron/blog/3636?from=rss

浮生未歇 2017-09-11 1 楼

使用expect工具:

 #!/bin/bash
SRC_HOST=127.0.0.1
SRC_PORT=22
SRC_USER=user
SRC_PWD=111111
SRC_PATH=/home/user

expect -c "
spawn scp -P $SRC_PORT $SRC_USER@$SRC_HOST:$SRC_PATH .
expect "*password: "
send "$SRC_PWDr"
expect eof
"

只是密码写在sh文件里不是很安全。