我在家里很懒,对家用机器使用密码身份验证。我准备转向基于密钥的身份验证。网上有很多关于如何做到这一点的选项,包括 catting 然后 ssh 密钥,直接 scping 密钥等。
我正在寻找最简单且推荐的复制密钥的方法,希望在 Ubuntu ssh 包中的某个地方有一个方便的包装器?
我已经知道如何关闭密码登录。
答案1
命令ssh-copy-id
(在openssh-客户端包(默认安装)确实做了这样的事情:
ssh-copy-id [email protected]
将您的默认身份(用于其他身份)的公钥复制-i identity_file
到远程主机。
默认身份是您的“标准” ssh 密钥。它由~/.ssh
目录中的两个文件(公钥和私钥)组成,通常命名为identity
、id_rsa
、id_dsa
或(与 相同),具体取决于密钥的类型。如果您没有创建多个 ssh 密钥,id_ecdsa
则不必担心指定身份,ssh-copy-id 会自动选择它。id_ed25519
.pub
如果您没有身份,您可以使用该工具生成一个ssh-keygen
。
此外,如果服务器使用与默认端口不同的端口(22
),则应按以下方式使用引号(来源):
ssh-copy-id "[email protected] -p <port-number>"
答案2
我喜欢 Marcel 的回答。我不知道这个命令。我一直在使用我在Oracle 网站:
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'
我仍然想在这里发布它,因为它很好地说明了在外壳代码借助 的力量ssh
。但使用ssh-copy-id
绝对是更安全、更正确的方法!
请注意,如果文件夹.ssh
尚不存在,则上述命令将失败。此外,在创建文件时设置最小权限(基本上只有所有者可以读写)可能会更好。以下是更高级的命令:
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'
答案3
图解法
- 打开应用▸密码和密钥▸我的个人钥匙。
- 选择您的密钥,然后单击偏僻的▸配置安全外壳的密钥。
答案4
用于自定义端口
ssh-copy-id -i "[email protected] -p2222"
-i 开关默认为 ~/.ssh/id_rsa.pub,如果您想要另一个密钥,请将密钥的路径放在 -i 后面
警告:如果您没有写 -i,它将复制在 ~/.ssh 中找到的所有密钥。