我正在执行相同的步骤(在 openSSH 上无需输入密码即可执行 SSH 和 SCP)。但是在 scp 或“ssh -l”命令运行时,它不断要求输入密码。几天前我执行了同样的步骤,它运行正常,但现在却不起作用了。
我所做的是:
- 我有两台机器,本地和远程。
- 在两台机器上,我都以root用户身份登录putty。
- 在两台机器上,我检查了“ssh -V”,发现两台机器都有相同版本和相同产品。
- 在本地,我从 /root/.ssh 文件夹运行
ssh-keygen
我将密钥文件名命名为 appkey。5. 它在 /root/.ssh 中生成了 appkey,appkey.pub 6. 在远程,我复制了本地 appkey.pub 的内容并粘贴到远程 authorized_keys 文件的末尾。7. 在远程,我运行
chmod 755 ~/.ssh chmod 644 ~/.ssh/authorized_keys
- 在本地,我尝试运行 scp 和“ssh -l”命令,但它仍然要求输入密码。
- 我也尝试了其他方法,而不是添加 authorized_keys 文件,而是将 appkey.put 复制到 romote /root/.ssh 文件夹
答案1
您还需要检查您的主目录权限,以确保没有人可以对其进行写入。否则陌生人可以重命名您的 .ssh 并创建自己的 .ssh。我有这个初始 ssh 设置,这是我几年前创建的,它帮助了很多人:
#!/bin/csh -fx
chmod go-w ~
if (! -d ~/.ssh) then
rm -rf ~/.ssh
mkdir ~/.ssh
endif
chmod 700 ~/.ssh
cd ~/.ssh
touch authorized_keys
chmod 600 authorized_keys
rm -f id_rsa
# generate id_rsa and id_rsa.pub
ssh-keygen -t rsa -f id_rsa -P ""
cat id_rsa.pub >> authorized_keys
# for remote host:
# cat ~/.ssh/id_rsa.pub | ssh HOST 'cat >> ~/.ssh/authorized_keys'
# it is the same as:
# ssh-copy-id -i id_rsa.pub USER@HOST
# it will add mulptiple entries if called multiple times
我不是这方面的专家,只是在网上收集了一些内容。有些内容可能已经过时,但在我们的环境中仍然有效。
答案2
当您从本地服务器发出 ssh 命令时,您是否尝试指定要使用的精确密钥文件,如下所示?
ssh -i /root/.ssh/appkey -l remote_username remote_servername
否则,ssh 会假定您的私钥名称,正如您从以下 ssh 手册页摘录中所看到的那样。
...
-i identity_file
Selects a file from which the identity (private key) for RSA or
DSA authentication is read. The default is ~/.ssh/identity for
protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for pro-
tocol version 2. Identity files may also be specified on a per-
host basis in the configuration file. It is possible to have
multiple -i options (and multiple identities specified in config-
uration files).
...
答案3
Jackua,你解决了我的问题。通过这样做可以解决:
- 删除现有的.ssh(重命名为.ssh_bck)文件夹。
- 我执行了与您提到的相同的步骤。
- 我用了
ssh-copy-id -i id_rsa.pub USER@HOST
- 使用命令“ssh ‘USER@HOST’”确认不要求输入密码。
- 运行
cat .ssh/authorized_keys
以验证文件中是否存在多个实体或单个实体。