我想设置我的家庭服务器以使用 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
我不确定为什么该脚本对您不起作用,但它只是一个简单的辅助脚本。尝试手动执行(如果存在除脚本之外的问题,它可能会帮助您诊断问题)。
长此以往,完成这一步的步骤如下:
- 使用以下命令将密钥复制到远程服务器
scp ~/.ssh/id_dsa.pub user@servername:~/
- 使用 ssh 连接到远程服务器
ssh user@servername
- 确保 .ssh 目录存在并且具有正确的权限,方法是使用以下命令调用 ssh:
ssh localhost
- 把钥匙放在正确的位置
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