我创建了密钥,这样我就可以传输文件和运行命令,而无需输入密码。我使用本指南来做到这一点:
http://says-story.blogspot.nl/2008/01/using-ssh-scp-sftp-without-password.html
将本地环境中 id_dsa.pub 键的 chmod 更改为 600。
当我现在运行这个命令时
scp -i /home/.ssh/id_dsa.pub /prod/tool/CODELIBRARY.txt user@remoteenv:/toload
它不断要求输入密码。当我按回车键时,它会要求输入密码。
但是当我运行此命令时,它无需密码或密码短语即可工作:
ssh -v -l username remoteenv
答案1
scp -i /home/.ssh/id_dsa.pub
该命令有两处错误。一是这种情况/home/.ssh
不太可能存在。 SSH 密钥通常位于您的主目录中调用的目录中.ssh
,并且您的主目录通常类似于/home/bob
,因此该.ssh
目录是/home/bob/.ssh
。
另一个更概念化的问题是scp
(orssh
或sftp
) 需要给出私人的密钥文件,但您传递了公钥文件。该密钥用于在服务器上对客户端进行身份验证。客户端需要证明它是谁,要做到这一点,它表明它知道一个其他人不知道的秘密:私钥。服务器知道客户端应该是谁,它知道公钥。
scp
或ssh
在您未指定密钥文件时有效,因为它默认查找正确的文件。
答案2
问题...当您运行此命令时:
ssh-keygen -t dsa
它会提示您输入关键词,因此:
[admin@test ~]$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
您是否将密码留空?或者您在那里输入了密码吗?在这种情况下,您需要将密码留空,以避免每次都被要求输入密码。
答案3
我刚刚发现的另一件事是,我必须编辑文件.ssh/authorized_keys
并使主机名完全合格。否则我无法在 scp/ssh 命令中使用完全限定名称。