Windows 中是否有与 ssh-copy-id 等效的程序?

Windows 中是否有与 ssh-copy-id 等效的程序?

是否有适用于 Windows 的 ssh-copy-id 的等效版本或端口?也就是说,是否有一种简单的方法可以将 SSH 密钥从本地计算机传输到 Windows 下的远程服务器?

如果有帮助的话,我正在使用 Pageant 和猫咪(Putty 的替代品)。

答案1

ssh-copy-id 是一个非常简单的脚本,在 Windows 下应该很容易复制。

如果忽略所有参数处理、错误处理等,那么这两个来自 ssh-copy-id 的命令实际上在大部分时间里完成工作。

GET_ID="cat ${ID_FILE}"
{ eval "$GET_ID" ; } | ssh ${1%:} "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys" || exit 1

使用 putty 工具,像这样的命令应该是等效的(未经测试)。

type  public_id | plink.exe username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"

如果您想要执行所有相同的错误处理和自动键定位,我相信在 Windows 下编写脚本会更加棘手,但绝对是可能的。

答案2

这些答案对我没有帮助。我真的不需要任何疯狂的脚本。我在 git bash 中的客户端计算机上创建了一个公钥,并试图将其复制到 VPS。

创建公钥后,密钥应存储为“(您启动的任何文件夹)/.ssh/id_rsa.pub”

因此使用此命令:您的用户名(有时是“root”,或者您可能设置的任何用户名) 在哪里,然后替换为您的机器/主机/ VPS 的 IP 地址。
cat ~/.ssh/id_rsa.pub | ssh [email protected] "cat >> ~/.ssh/authorized_keys"user123.45.67.89

.ssh如果主机上尚未创建目录,请使用以下小变体:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"

答案3

ssh-copy-id 做了几件事(阅读手册页有关详细信息),但它最重要的作用是将本地公钥文件的内容附加到名为 authorized_keys 的远程文件中。

  • 您可以自己使用文本编辑器打开密钥文件并将内容粘贴到 Kitty 终端中来执行此操作。
    echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys

  • 或者,你可以使用以下方式上传文件温SCP(使用 sftp 或 scp 作为后备)并做一些与我之前建议类似的事情,而不需要丑陋的复制/粘贴。
    cat id_rsa.pub >> .ssh/authorized_keys
    其中 id_rsa.pub 是您上传的公钥的文件名。

答案4

在 Windows 7 中有一个 ssh.exe

以下是对我有用的方法:

1. 创建身份(在 Windows 上)

c:\>ssh-keygen

这会在主目录中创建一个身份文件。我将公钥的名称更改为“id_rsa”

2. 使用 ssh 将文件复制到目标 linux 系统 致谢https://serverfault.com/users/984/zoredache他的回答

c:\>ssh user@lnxhost "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1" < \\path_to_where_the_file_was_generated_from_ssh_key_gen\id_rsa.pub

注意:由于某种原因,管道对我来说不起作用:

# this should work but it didn't work for me 
type file | ssh user@lnxhost "cat >> /tmp/t.txt"

3.在linux上修正文件 Windows 上的 id_rsa.pub 文件是多行的,而 Linux 要求它只有一行,所以我们必须稍微改正一下。登录 Linux 并打开文件:

vi ~/.ssh/authorized_keys

例如:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "2048-bit RSA, user@winhost"
AAAAB3NzaC1yc2EAAAABIwAAAQEAnvYlVooXGoj3+7huZBUqf4wj57r25SHCKiiShyla33
5flX7Rsmb4meExpdh2NzfzffG15xl1wo0xBZ3HdZdqF2GUniEcNbtVjS1FKzQwPfsYPHMC
Y58qT0U2ZgK1zsXj2o0D2RWrCv3DFFfwUgNyZRYN2HK32umY6OmGSOVuJvIKhT+X6YaCVy
ax3CHv2ByB2OTBl9mh4nrwYAVXToT+X2psBE+MKB5R85lrUGkl3GtymTk10Dvf5O80exdT
LFRMvkCA5RAIZgvxMk/bbNaH/0UHQoctX9oaDeKGWUPfVaknFBQdU9009+lK/ocAlKVNHE
Qkw+1wuV6dFoT1/hngSw==
---- END SSH2 PUBLIC KEY ----

应该成为

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnvYlVooXGoj3+7huZBUqf4wj57r25SHCKiiShyla335flX7Rsmb4meExpdh2NzfzffG15xl1wo0xBZ3HdZdqF2GUniEcNbtVjS1FKzQwPfsYPHMCY58qT0U2ZgK1zsXj2o0D2RWrCv3DFFfwUgNyZRYN2HK32umY6OmGSOVuJvIKhT+X6YaCVyax3CHv2ByB2OTBl9mh4nrwYAVXToT+X2psBE+MKB5R85lrUGkl3GtymTk10Dvf5O80exdTLFRMvkCA5RAIZgvxMk/bbNaH/0UHQoctX9oaDeKGWUPfVaknFBQdU9009+lK/ocAlKVNHEQkw+1wuV6dFoT1/hngSw== user@winhost

4. 测试

c:\>ssh user@lnxhost "ls -al /tmp/"

这应该列出 /tmp 的内容而不需要输入密码。

相关内容