SSH 密钥问题

SSH 密钥问题

我想设置我的家庭服务器以使用 ssh 密钥,但是当我按照教程https://help.ubuntu.com/10.04/serverguide/C/openssh-server.html 为了设置 ssh 密钥,我得到了这个:

Bad port 'umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys'

我完成了使用以下命令创建密钥的部分:

ssh-keygen -t dsa

但要求我这样做的部分是:

ssh-copy-id user@servername

当我收到上述错误时。

谢谢您的帮助。

答案1

我不确定为什么该脚本对您不起作用,但它只是一个简单的辅助脚本。尝试手动执行(如果存在除脚本之外的问题,它可能会帮助您诊断问题)。

长此以往,完成这一步的步骤如下:

  1. 使用以下命令将密钥复制到远程服务器scp ~/.ssh/id_dsa.pub user@servername:~/
  2. 使用 ssh 连接到远程服务器ssh user@servername
  3. 确保 .ssh 目录存在并且具有正确的权限,方法是使用以下命令调用 ssh:ssh localhost
  4. 把钥匙放在正确的位置cat ~/id_dsa.pub >> ~/.ssh/authorized_keys

(然后您可以删除目标机器上主目录中的 id_dsa.pub 文件)

这假设您有一个 dsa 密钥——如果您有一个 rsa 密钥,则在所有情况下都使用 id_rsa.pub。

有一些复杂的方法可以在一行中完成此操作,但如果您遇到问题,它们不会比帮助您解决问题的脚本更有用。

答案2

当我尝试使用非标准端口登录时,收到了相同的错误消息。

为了调试,我运行了脚本,并在其前面加上了前缀bash -x。下面是我遇到的问题:

+ ssh -p8882 'umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys'

因此它采用了命令行选项“-p8882”,并尝试将其用作要访问的机器。不用说,它失败了。不过,我必须查看您的输出才能进一步隔离您的问题。

正如 teeks99 所说,首先请确保您可以使用密码登录。这应该可以将“无法使用 ssh 登录”问题与“ssh-copy-id 不知为何损坏”问题区分开来。

编辑后添加:

您可以通过创建或添加以下文件来解决无法向 ssh 传递任何附加参数的问题~/.ssh/config

Host shortname
    HostName ec2-0-0-0-0.compute-1.amazonaws.com
    Port  8882
    IdentityFile ~/.ssh/nonstandard.name
    User ubuntu

man 5 ssh_config了解详情

通过大致的设置,我只需执行以下命令即可让脚本运行ssh-copy-id shortname

相关内容