OpenSSH 9.9发布:ssh-copy-id命令迎来重大更新!
OpenSSH 9.9发布:ssh-copy-id命令迎来重大更新!
OpenSSH 9.9版本于2024年9月20日发布,带来了多项重要更新。其中,ssh-copy-id命令的改进尤为引人注目。本文将详细介绍这一新功能,并结合Windows用户使用ssh-copy-id的常见问题,提供实用的解决方案。
ssh-copy-id的新功能
在OpenSSH 9.9中,ssh-copy-id命令得到了显著增强。以下是主要改进点:
多密钥支持:现在可以一次性复制多个密钥到远程服务器。这对于使用多个SSH密钥的用户来说是一个重大改进,可以显著简化工作流程。
批量操作:新增了批量复制密钥的功能,允许用户将多个密钥复制到多个主机,大大提高了系统管理员的工作效率。
错误处理优化:改进了错误处理机制,当复制密钥失败时,会提供更详细的错误信息,帮助用户快速定位问题。
配置文件支持:现在可以从SSH配置文件中读取主机信息,使得ssh-copy-id的使用更加灵活便捷。
Windows用户使用ssh-copy-id的解决方案
虽然OpenSSH的更新带来了诸多便利,但Windows用户在使用ssh-copy-id时仍可能遇到一些挑战。以下是几种实用的解决方案:
方法一:使用PowerShell脚本
在PowerShell中运行以下脚本可以实现类似ssh-copy-id的功能:
function ssh-copy-id([string]$userAtMachine, $args){
$publicKey = "$ENV:USERPROFILE" + "/.ssh/id_rsa.pub"
if (!(Test-Path "$publicKey")){
Write-Error "ERROR: failed to open ID file '$publicKey': No such file"
}
else {
& cat "$publicKey" | ssh $args $userAtMachine "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1"
}
}
此脚本会将公钥复制到远程服务器的~/.ssh/authorized_keys
文件中。
方法二:安装Git Bash
Git Bash自带ssh-copy-id命令。下载并安装Git for Windows后,你可以在Git Bash中直接使用该命令。
方法三:手动复制公钥
如果上述方法不可行,可以手动完成操作:
- 打开PowerShell,输入以下命令生成SSH密钥(如未生成):
ssh-keygen -t rsa
- 复制公钥内容:
Get-Content ~/.ssh/id_rsa.pub
- 使用SSH连接到目标服务器,并创建
.ssh
目录及authorized_keys
文件(如果不存在):ssh zhangsan@172.17.0.3 'mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys'
- 将本地公钥追加到远程服务器的
authorized_keys
文件中:Get-Content ~/.ssh/id_rsa.pub | ssh zhangsan@172.17.0.3 'cat >> ~/.ssh/authorized_keys'
结语
OpenSSH 9.9的发布带来了ssh-copy-id命令的重大改进,为用户提供了更便捷的密钥管理体验。无论是新增的多密钥支持,还是优化的错误处理机制,都体现了OpenSSH项目组对用户体验的持续关注。对于Windows用户而言,通过上述解决方案,也可以充分享受到这一新功能带来的便利。