我在家里很懒,对我的家用机器使用密码认证。我已准备好转向基于密钥的身份验证。网络上有很多关于如何执行此操作的选项,包括 catting 然后 ssh the key over,直接 scping key over 等。
我正在寻找复制密钥的最简单和推荐的方法,希望 Ubuntu ssh 包中的某处有一个方便的包装器?
我已经知道如何关闭密码登录。
Mar*_*erg 570
该ssh-copy-id命令(在openssh-client包中并默认安装)正是这样做的:
ssh-copy-id user@hostname.example.com
Run Code Online (Sandbox Code Playgroud)
将您的默认身份(-i identity_file用于其他身份)的公钥复制到远程主机。
默认身份是您的“标准”ssh 密钥。它由在两个文件(公钥和私钥)~/.ssh的目录,通常命名为identity,id_rsa,id_dsa,id_ecdsa或id_ed25519(和相同的带.pub),这取决于密钥类型。如果您没有创建多个 ssh 密钥,则不必担心指定身份,ssh-copy-id 会自动选择它。
如果您没有身份,可以使用工具生成一个ssh-keygen。
此外,如果服务器使用的端口与默认端口 ( 22)不同,则应以这种方式使用引号 ( source ):
ssh-copy-id "user@hostname.example.com -p <port-number>"
Run Code Online (Sandbox Code Playgroud)
Huy*_*ens 161
我喜欢马塞尔的回答。我不知道这个命令。我一直在使用我在Oracle 网站上找到的内容:
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'
Run Code Online (Sandbox Code Playgroud)
我想在这里仍然发布它,因为它是一个什么样可以实现很好的例证shell代码用的功率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"'
Run Code Online (Sandbox Code Playgroud)
Lek*_*eyn 20
在 Ubuntu 上,您可以从 Launchpad 获取您的密钥:
ssh-import-id [launchpad account name]
Run Code Online (Sandbox Code Playgroud)
详情:
将公钥文件的内容粘贴到该字段中(包括评论)。这样的键看起来像:
ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn
Run Code Online (Sandbox Code Playgroud)
此处,ssh-rsa表示密钥是 RSA 密钥,AAAAB3Nza .... UyDOFDqJp是实际密钥,lekensteyn是注释。
该软件包ssh-import-id需要安装在需要从远程访问的机器上。此包与openssh-server包一起安装,因为它是openssh-server. 确保ssh-import-id已安装在客户端计算机上后,运行:
ssh-import-id [launchpad account name]
Run Code Online (Sandbox Code Playgroud)
这将通过 HTTPS 从 Launchpad 服务器下载公钥,从而保护您免受 MITM 攻击。
在 Ubuntu Lucid 及之前,您可以通过以下方式完成相同的操作:
wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
该echo命令需要在带有 SSH 密钥的行之后获得一个额外的换行符。
Oma*_* S. 15
自定义端口
ssh-copy-id -i "user@hostname.example.com -p2222"
Run Code Online (Sandbox Code Playgroud)
-i 开关默认为 ~/.ssh/id_rsa.pub,如果你想要另一个密钥,把密钥的路径放在 -i 之后
警告:如果你没有写 -i 它会复制你在 ~/.ssh 中找到的所有密钥
Vic*_*tii 11
解决方法很简单:
移动~/.ssh到新机器并运行ssh-add。完毕!
长答案:
~/.ssh到 USB 驱动器或您喜欢的任何其他存储设备。~aka下/home/$USER。ssh-add,在新机器上完成。PS做了很多次。我对互联网上过于复杂的解决方案感到惊讶,这些解决方案通常不起作用。
ssh-copy-id正是这样做的。我不确定为什么这里的其他一些答案添加了不准确的信息。帮助显示如下:
~$ ssh-copy-id -h
Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname
-f: force mode -- copy keys without trying to check if they are already installed
-n: dry run -- no keys are actually copied
-h|-?: print this help
Run Code Online (Sandbox Code Playgroud)
我刚刚在 Ubuntu 18.04 客户端和 CentOS 7.6 服务器上尝试了以下操作,效果非常好。该示例显示使用 的自定义端口2222,并在以下位置指定公钥~/.ssh/path-to-rsa.pub
$ ssh-copy-id -i ~/.ssh/path-to-rsa.pub -p 2222 myusername@hostname.tld
Run Code Online (Sandbox Code Playgroud)
在运行该命令之前,我实际上使用了-n最后的开关进行了一次试运行,以确认该命令将按预期工作。一旦我确认了这一点,我就按照上面的方式再次运行命令,没有-n开关。
| 归档时间: |
|
| 查看次数: |
806974 次 |
| 最近记录: |