您的位置:首页 > 其它

实现执行scp命令时不需要输入用户密码

2010-09-30 11:30 405 查看

1.

引言

最近在编写定时自动执行的

shell

脚步中遇到一个问题。在该脚步中,需要使用

scp

命令将本地的文件复制到另一台机器中备份。但通常执行

scp

命令后都需要输入用户密码,这样在

定时自动执行的

shell

脚步中就不适用了。本人的第一直觉就是建立无密码用户,在

scp

命令中使用该用户就不需要输入用户密码了。

以下为了讨论方便,我们将执行

scp

命令的机器称为

Client



scp

命令操作的远端机器称为

Server



首先,我通过以下命令将机器

Server



root

的密码删除,即使

root

变为无密码用户。

[root@Server

root]#



passwd -d
root

Removing password for user root.

passwd: Success

[root@Server

root]#



为了确认

root

已经变为无密码用户,登录试试。

Red Hat Linux release 8.0 (Psyche)

Kernel 2.4.18-14
on an i686

Server login: root

Last login: Fri Sep 14 16:40:08 on tty1

[root@Server

root]#



确实

root

登录时已经不需要密码了。

然后,我们从机器

Client

复制一个文件到机器

Server



[root@Client

root]#



scp -p
text root@192.168.3.206:/root

root@192.168.3.206's password:

<--

直接输入回车

Permission denied, please try again.

<--

被拒绝

root@192.168.3.206's password:

<--

输入任意字符

text

100%
|**************************|

19

00:00

[root@Client

root]#



从测试结果可知,即使

root

变为无密码用户,

scp

命令在执行时也会提示输入密码。

更奇怪的是在提示输入密码时,直接输入回车被拒绝了。但输入其它任意字符后输入回车确认就通过认证了。

2.

执行

scp

时不需要输入用户密码

在两台机器的两个用户之间建立安全的信任关系后,可实现执行

scp

命令时不需要输入用户密码。以下是在机器

Client



root

和机器

Server



root

之间建立安全信任关系的步骤:

1.

在机器

Client



root

用户执行

ssh-keygen

命令,生成建立安全信任关系的证书。

[root@Client

root]#



ssh-keygen -b
1024 -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key
(/root/.ssh/id_rsa):

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:

49:9c:8a:8f:bc:19:5e:8c:c0:10:d3:15:60:a3:32:1c root@Client

[root@Client

root]#



注意:在程序提示输入

passphrase

时直接输入回车,表示无证书密码。

上述命令将生成私钥证书

id_rsa

和公钥证书

id_rsa.pub

,存放在用户家目录的

.ssh

子目录中。

2.

将公钥证书

id_rsa.pub

复制到机器

Server



root

家目录的

.ssh

子目录中,同时将文件名更换为

authorized_keys



[root@Client

root]#



scp -p
.ssh/id_rsa.pub root@192.168.3.206:/root/.ssh/authorized_keys

root@192.168.3.206's password:

<--

输入机器

Server



root

用户密码

id_rsa.pub

100%
|**************************|

218

00:00

[root@Client
root]#



在执行上述命令时,两台机器的

root

用户之间还未建立安全信任关系,所以还需要输入机器

Server



root

用户密码。

经过以上

2

步,就在机器

Client



root

和机器

Server



root

之间建立安全信任关系。下面我们看看效果:

[root@Client

root]#



scp -p
text root@192.168.3.206:/root

text

100%
|**************************|

19

00:00

[root@Client
root]#



成功了!真的不再需要输入密码了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: