Mat*_* V. 56 windows ssh port file-transfer ssh-keys
是否有可用于 Windows 的 ssh-copy-id 的等效项或端口?也就是说,有没有一种简单的方法可以在 Windows 下将 SSH 密钥从本地机器传输到远程服务器?
如果有帮助,我已经在使用 Pageant 和Kitty(一种腻子替代品)。
Zor*_*che 27
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
Run Code Online (Sandbox Code Playgroud)
使用腻子工具,这样的命令应该是等效的(未测试)。
type public_id | plink.exe username@hostname "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys"
Run Code Online (Sandbox Code Playgroud)
如果您想进行所有相同的错误处理和自动键定位,我相信在 Windows 下编写脚本会更加棘手,但肯定是可能的。
小智 20
这些答案对我没有帮助。我真的不需要任何疯狂的脚本。我在我的客户端机器上用 git bash 创建了一个公钥,并试图将它复制到 VPS。
创建公钥后,密钥应存储为“(无论您在哪个文件夹中启动)/.ssh/id_rsa.pub”
所以使用这个命令:你的用户名
cat ~/.ssh/id_rsa.pub | ssh user@123.45.67.89 "cat >> ~/.ssh/authorized_keys" 在哪里user(有时是“root”,或者你可能设置的任何内容),并替换123.45.67.89为你的机器/主机/VPS的IP地址。
如果.ssh尚未在主机上创建目录,请使用以下小变化:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir ~/.ssh; cat >> ~/.ssh/authorized_keys"
Ken*_*ert 16
ssh-copy-id 做了几件事(阅读手册页了解详细信息),但它所做的最重要的事情是将本地公钥文件的内容附加到名为authorized_keys 的远程文件中。
您可以通过使用文本编辑器打开密钥文件并将内容粘贴到 Kitty 终端中来自己完成此操作。
echo 'long_line_with_contents_of_public_key_file' >> .ssh/authorized_keys
或者,您可以使用WinSCP(使用 sftp 或 scp 作为后备)上传文件并执行与我之前的建议类似的操作,而无需进行丑陋的复制/粘贴。
cat id_rsa.pub >> .ssh/authorized_keys
其中 id_rsa.pub 是您上传的公钥的文件名。
受到 zoredache 的回答的启发,我创建了一堆 Windows 版本的脚本。然而,它们都依赖于 plink。请看这里
https://github.com/VijayS1/Scripts/blob/master/ssh-copy-id/
我还有一个 winscp 脚本,可以根据另一个答案使用。:) 摘自自述文件:
目前尝试过的方法:
usage: .\Scriptname test@example.com password [identity file]usage: .\Scriptname /i:idtest.pub user@example.com /p:passwordusage: .\Scriptname -i idtest.pub user@example.com password # "WinSCP.com" /script=".\Scriptname" /parameter "user[:password]@example.com" "id_rsa.pub" [/log=".\copyssh.log]" 小智 5
在 Windows 7 中有一个 ssh.exe
这是对我有用的:
1. 创建身份(在 Windows 上)
c:\>ssh-keygen
Run Code Online (Sandbox Code Playgroud)
这在主目录中创建了一个身份文件。我将公钥的名称更改为“id_rsa”
2. 使用 ssh Credits将文件复制到目标 linux 系统到https://serverfault.com/users/984/zoredache for his answer
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
Run Code Online (Sandbox Code Playgroud)
注意:由于某种原因,管道对我不起作用:
# this should work but it didn't work for me
type file | ssh user@lnxhost "cat >> /tmp/t.txt"
Run Code Online (Sandbox Code Playgroud)
3. 修正linux 上 的文件windows上的id_rsa.pub 文件是多行的,而linux 期望它在一行中,所以我们必须稍微修正一下。登录linux并打开文件:
vi ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
例如:
---- 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 ----
Run Code Online (Sandbox Code Playgroud)
应该成为
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnvYlVooXGoj3+7huZBUqf4wj57r25SHCKiiShyla335flX7Rsmb4meExpdh2NzfzffG15xl1wo0xBZ3HdZdqF2GUniEcNbtVjS1FKzQwPfsYPHMCY58qT0U2ZgK1zsXj2o0D2RWrCv3DFFfwUgNyZRYN2HK32umY6OmGSOVuJvIKhT+X6YaCVyax3CHv2ByB2OTBl9mh4nrwYAVXToT+X2psBE+MKB5R85lrUGkl3GtymTk10Dvf5O80exdTLFRMvkCA5RAIZgvxMk/bbNaH/0UHQoctX9oaDeKGWUPfVaknFBQdU9009+lK/ocAlKVNHEQkw+1wuV6dFoT1/hngSw== user@winhost
Run Code Online (Sandbox Code Playgroud)
4.测试一下
c:\>ssh user@lnxhost "ls -al /tmp/"
Run Code Online (Sandbox Code Playgroud)
这应该列出 /tmp 的内容而不要求输入密码。
如果您ssh-copy-id在 Windows 上没有,您可以在服务器本身上运行它。
.pub扩展名的文件中。.pub文件上传到服务器。在服务器类型上:
ssh-copy-id -i mykey.pub username@localhost
Run Code Online (Sandbox Code Playgroud)在 Windows 上,ssh-copy-id脚本随Git for Windows 提供。所以你可以在本地使用它,如果你有适用于 Windows 的 Git。
如果您不想手动执行此操作,可以使用WinSCP 5.15。它可以为您设置公钥认证。
使用WinSCP 高级站点设置对话框的 SSH > 身份验证页面上的工具 > 将公钥安装到服务器按钮。
(我是 WinSCP 的作者)